RT
为什么在洛谷编译过不去,说是炸掉空间了。而且本地运行时360会显示这个exe有木马病毒?
代码好像也是对的。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 5000005
#define mod 998244353
ll qpow(ll a,ll b){
ll res=1,a2=a;
while(b){
if(b&1)res=res*a2%mod;
a2=a2*a2%mod;b=b>>1;
}
return res;
}
ll get_C(ll n, ll m)
{
if (n==m||m==0)return 1;
return get_C(n-1,m)+get_C(n-1,m-1);
}
ll fac[maxn]={1},rev[maxn];
ll g[maxn+1]={1,0},p[maxn+1]={1};
void Inv(){
fac[0]=1;
for(register ll i=1;i<=maxn;i++){
fac[i]=fac[i-1]*i%mod;
}
rev[maxn]=qpow(fac[maxn],mod-2);
for(register ll i=maxn;i;i--) rev[i-1]=rev[i]*i%mod;
}
ll t;
void work(){
for(register ll i=2;i<=maxn;i++)
g[i]=(g[i-1]+g[i-2]*2*(i-1))%mod*4*i%mod*(i-1)%mod;
for(register ll i=1;i<=maxn;i++){
p[i]=p[i-1]*2%mod;
}
scanf("%lld",&t);
while(t--){
ll n,k;
scanf("%lld%lld",&n,&k);
printf("%lld\n",fac[n]*rev[n-k]%mod*fac[n]%mod*rev[k]%mod*rev[n-k]%mod*p[k]%mod*g[n-k]%mod);
}
}
int main(){
Inv();
work();
return 0;
}
每一步都有取模啊