我只有60pts
偶数是2n−2−Cn−22n−1吗
评测记录
#include<iostream>
#include<cstdio>
using ll=long long;
using namespace std;
ll n,ans=1,fac[114514]={1},mod=998244353;
ll qpow(ll a,ll n)
{
if(a==1)return a;
if(n==0)return 1;
if(n==1)return a;
ll tmp=qpow(a,n/2);
tmp=(tmp*tmp)%mod;
if(n&1)return (tmp*a)%mod;
return tmp;
}
int main()
{
cin>>n;
if(n==1)return 0*printf("0");
ans=qpow(2,n-2);
if(n&1)
return 0*printf("%lld",ans);
for(int i=1;i<=n;++i)
fac[i]=(fac[i-1]*i)%mod;
ll k=(fac[(n>>1)-1]*fac[(n>>1)-1])%mod;
k=qpow(k,mod-2);
k=(fac[n-2]*k)%mod;
cout<<ans-k;
return 0;
}