全部都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
*/