神奇的错
查看原帖
神奇的错
344382
lmrttx楼主2020/12/26 10:57

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;
} 

每一步都有取模啊

2020/12/26 10:57
加载中...