这题正解是杨辉三角吗,为什么我只有40pts,感觉没问题啊。
#include<iostream>
#include<algorithm>
using namespace std;
__int128 n,C[100002],p=998244353,ans=0;
inline __int128 qread(){
__int128 x=0,f=1;
char ch=getchar();
while(ch<'0' || ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
inline void qwrite(__int128 x){
char ch[200];
if(!x){
putchar('0');return;
}
if(x<0){
putchar('-');
x=-x;
}
int cnt=0;
while(x>0){
ch[cnt++]=x%10+'0';
x/=10;
}
while(cnt>0) putchar(ch[--cnt]);
}
int main()
{
C[0]=1;
n=qread();
if(n==1) ans=0;
else if(n==2) ans=0;
else {
n-=2;
for(int i=1;i<=n;++i){
C[i]=C[i-1]*(n+1-i)/i;
}
for(int i=0;i<=n;++i){
if(n%2==0 && i!=n/2) ans=ans+C[i];
else if(n%2!=0) ans=ans+C[i];
}
ans=ans%p;
}
qwrite(ans);
return 0;
}