Submission #45209716


Source Code Expand

#include<bits/stdc++.h>
#define N 1<<19
#define P 998244353
using namespace std;
int read(){
	int x=0,w=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
	while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	return x*w;
}
int qpow(int k,int b){
	int ret=1;
	while(b){
		if(b&1)ret=1ll*ret*k%P;
		k=1ll*k*k%P,b>>=1;
	}
	return ret;
}
int A[N],a2[N],lnb[N];
int lim,r[N],m,k,gn,tp,inv;
int iv[N];
void init_iv(int n){
	iv[1]=1;
	for(int i=2;i<=n;i++)
		iv[i]=1ll*(P-P/i)*iv[P%i]%P;
}
void init_r(int lim){
	for(int i=0;i<lim;i++)
        r[i]=(r[i>>1]>>1)+(i&1)*(lim>>1);
}
void ntt(int *x,int opt){
	for(int i=0;i<lim;i++)
		if(r[i]<i)swap(x[i],x[r[i]]);
	for(int m=2,k=1;m<=lim;m<<=1,k<<=1){
		gn=qpow(3,(P-1)/m);
		for(int i=0;i<lim;i+=m){
			for(int j=0,g=1;j<k;j++,g=1ll*g*gn%P){
				tp=1ll*x[i+j+k]*g%P;
				x[i+j+k]=(x[i+j]-tp+P)%P;
				x[i+j]=(x[i+j]+tp)%P;
			}
		}
	}
	if(opt==-1){
		reverse(x+1,x+lim),inv=qpow(lim,P-2);
		for(int i=0;i<lim;i++)
			x[i]=1ll*x[i]*inv%P;
	}
}
void Inv(int *a,int *b,int n){
	if(n==1){
		b[0]=qpow(a[0],P-2);
		return;
	}
	Inv(a,b,(n+1)>>1);
	lim=1;while(lim<(n<<1))lim<<=1;
	init_r(lim);
	for(int i=0;i<lim;i++)A[i]=i<n?a[i]:0;
	ntt(A,1),ntt(b,1);
	for(int i=0;i<lim;i++)
		b[i]=1ll*b[i]*((2ll-1ll*A[i]*b[i]%P+P)%P)%P;
	ntt(b,-1);
	for(int i=n;i<lim;i++)b[i]=0;
}
void Ln(int *a,int *b,int n){
	for(int i=0;i<(n<<2);i++)b[i]=0;
	Inv(a,b,n);
	lim=1;while(lim<(n<<1))lim<<=1;
	init_r(lim);
	for(int i=0;i<n-1;i++)
		a2[i]=1ll*a[i+1]*(i+1)%P;
	for(int i=n-1;i<lim;i++)a2[i]=0;
	ntt(a2,1),ntt(b,1);
	for(int i=0;i<lim;i++)
		b[i]=1ll*b[i]*a2[i]%P;
	ntt(b,-1);
	for(int i=n-1;i;i--)
		b[i]=1ll*b[i-1]*iv[i]%P;
	for(int i=n;i<lim;i++)b[i]=0;
	b[0]=0;
}
void Exp(int *a,int *b,int n){
	if(n==1){
		b[0]=1;
		return;
	}
	Exp(a,b,(n+1)>>1);
	Ln(b,lnb,n);
	lim=1;while(lim<(n<<1))lim<<=1;
	init_r(lim);
	for(int i=0;i<n;i++)
		lnb[i]=(a[i]-lnb[i]+P)%P;
	for(int i=n;i<lim;i++)lnb[i]=b[i]=0;
	lnb[0]++;
	ntt(lnb,1),ntt(b,1);
	for(int i=0;i<lim;i++)
		b[i]=1ll*b[i]*lnb[i]%P;
	ntt(b,-1);
	for(int i=n;i<lim;i++)b[i]=0;
}
int n,f[N],g[N];
int main(){
	n=read(),init_iv(n);
	int fac=1;
	for(int i=1;i<=n;i++)
		f[i]=qpow(1ll*i*i%P,P-2),fac=1ll*fac*i%P;
	Exp(f,g,n+1);
	int tp=((1-2*g[n])%P+P)%P;
	printf("%d\n",(1ll*fac*fac%P*tp%P+fac)%P);
	 
	return 0;
}

Submission Info

Submission Time
Task Ex - Count Strong Test Cases
User SError_
Language C++ 20 (gcc 12.2)
Score 650
Code Size 2420 Byte
Status AC
Exec Time 679 ms
Memory 15620 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:109:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long long int’ [-Wformat=]
  109 |         printf("%d\n",(1ll*fac*fac%P*tp%P+fac)%P);
      |                 ~^
      |                  |
      |                  int
      |                 %lld

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 650 / 650
Status
AC × 4
AC × 20
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 3816 KiB
00_sample_02.txt AC 1 ms 3704 KiB
00_sample_03.txt AC 1 ms 3676 KiB
00_sample_04.txt AC 2 ms 3720 KiB
01_test_01.txt AC 1 ms 3816 KiB
01_test_02.txt AC 154 ms 7276 KiB
01_test_03.txt AC 324 ms 10448 KiB
01_test_04.txt AC 150 ms 6568 KiB
01_test_05.txt AC 676 ms 15432 KiB
01_test_06.txt AC 152 ms 6980 KiB
01_test_07.txt AC 678 ms 15396 KiB
01_test_08.txt AC 678 ms 15456 KiB
01_test_09.txt AC 678 ms 15452 KiB
01_test_10.txt AC 678 ms 15456 KiB
01_test_11.txt AC 678 ms 15596 KiB
01_test_12.txt AC 678 ms 15528 KiB
01_test_13.txt AC 678 ms 15620 KiB
01_test_14.txt AC 679 ms 15492 KiB
01_test_15.txt AC 678 ms 15436 KiB
01_test_16.txt AC 678 ms 15528 KiB