代码求调+灵异事件
查看原帖
代码求调+灵异事件
422158
Realite楼主2025/7/26 18:03

全部都WA的代码

但是我把数据下载下来本地调试,却发现输出没有问题

有尝试过更换编译语言,但是仍然全WA。

怎么看都看不出问题,求个大佬帮忙看看QAQ

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll P=998244353;

ll f[110][40][110][40],C[120][120];
ll v[110][100],n,m,k,ans;
ll fac[110],inv[110];

ll power(ll a,ll b){
	if(b<0) return 0;
	ll ans=1;
	for(;b;b>>=1){
		if(b&1)
		ans=ans*a%P;
		a=a*a%P;
	}
	return ans;
}

void pre(){
	fac[0]=1,inv[0]=1;
	for(ll i=1;i<=110;i++){
		fac[i]=fac[i-1]*i%P;
	}
	inv[110]=power(fac[110],P-2);
	for(ll i=109;i>=1;i--){
		inv[i]=inv[i+1]*(i+1)%P;
	}
	for(int i=0;i<=110;i++){
		for(int j=0;j<=i;j++){
			if(j==0 or i==0)
			C[i][j]=1;
			else
			C[i][j]=fac[i]*inv[j]%P*inv[i-j]%P;
		}
	}
}

ll popcnt(ll x){
	ll sum=0;
	while(x>0){
		if(x&1)
		sum++;
		x=x>>1;
	}
	return sum;
}

int main(){
	cin>>n>>m>>k;
	for(ll i=0;i<=m;i++){
		cin>>v[i][1];
	}
	for(int i=0;i<=m;i++){
		v[i][0]=1;
		for(int j=2;j<=n+1;j++){
			v[i][j]=v[i][j-1]*v[i][1]%P;
		}
	}
	pre();
	f[0][0][0][0]=1;
	for(ll i=0;i<=m;i++){
		for(ll j=0;j<=n;j++){
			for(ll p=0;p<=k;p++){
				for(ll q=0;q<=n>>1;q++){
					for(ll t=0;t+j<=n;t++){
						f[i+1][j+t][(t+q)%2+p][(q+t)/2]=(f[i+1][j+t][(t+q)%2+p][(q+t)/2]+C[n-j][t]*v[i][t]%P*f[i][j][p][q]%P)%P;
//						printf("%lld %lld %lld %lld %lld %lld %lld\n",i,j,p,q,t,f[i][j][p][q],f[i+1][j+t][(t+q)%2+p][(q+t)/2]); 
//						printf("&&& %lld %lld %lld %lld\n",i+1,j+t,(t+q)%2+p,(q+t)/2);
					}
				}
			}
		}
	}
		for(int j=0;j<=k;j++){
			for(int p=0;p<=n>>1;p++) 
			if(j+popcnt(p)<=k){
				ans=(ans+f[m+1][n][j][p])%P;
			}
		}
	cout<<ans;
	return 0;
}
/*
8 9 4
934258593 150407625 187068439 162292791 219945760 512449588 803393963 983648121 484675481 412407699
8 9 1
499488183 118995914 332316574 399234563 246850128 338768262 489466833 673193710 723933572 12759125

8 9 1
499488183 118995914 332316574 399234563 246850128 338768262 489466833 673193710 723933572 12759125

*/

最后的提交记录

2025/7/26 18:03
加载中...