为何在洛谷IDE上可以跑过下载的数据,但是实测却全WA?检测到第一个输出的字符全是负号。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int P=998244353;
int n,m,k,v[110],C[35][35],f[35][110][35][70],pw[110][35];
int count(int x){
return __builtin_popcountll(x);
}
#define This f[x][num][c][eva]
int dfs(int x,int num,int c,int eva){
if(This!=-1) return This;
if(x==n) return This=(c+count(eva)<=k);
if(num>m||c+(!!eva)>k) return This=0;
This=0;
for(int i=0;i<=n-x;++i)
(This+=pw[num][i]*C[x+i][i]%P*dfs(x+i,num+1,c+(eva+i)%2,eva+i>>1)%P)%=P;
return This;
}
main(){
memset(f,-1,sizeof f);
cin>>n>>m>>k;
for(int i=0;i<=m;++i) cin>>v[i];
for(int i=0;i<35;++i){
C[i][0]=1;
for(int j=1;j<35;++j)
C[i][j]=(C[i-1][j-1]+C[i-1][j])%P;
}
for(int i=0;i<=m;++i){
pw[i][0]=1;
for(int j=1;j<=n;++j)
pw[i][j]=pw[i][j-1]*v[i]%P;
}
cout<<dfs(0,0,0,0);
}
In:
8 9 1
499488183 118995914 332316574 399234563 246850128 338768262 489466833 673193710 723933572 12759125
Out:
789420212