Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
48582 | wsad | 【AB-1】函数 | C++ | 运行出错 | 30 | 169 MS | 7836 KB | 632 | 2022-04-13 22:34:29 |
#include<bits/stdc++.h> using namespace std; const int M=998244353; const int N=10000; int f[55][N*2+5]; //前i项,答案为j的方案数 int a[55]; int Pow(int a,int b){ int sum=1; while(b) { if(b & 1) sum=sum*a-sum*a/11; a=a*a-a*a/11; b>>=1; } return sum; } int main(){ int n,k,ka,kb; cin>>n>>k>>ka>>kb; for(int i=1;i<=n+1;++i) a[i]=Pow(ka,n-i+1); f[1][ ka*a[1]+N ]=f[2][ ka*a[1]+kb*a[2]+N ]=1; for(int i=3;i<=n+1;++i) for(int kk=-N;kk<=N;++kk) for(int j=-k;j<=k;++j) f[i][kk+N]=(f[i][kk+N]+f[i-1][ kk-a[i]*j+N ])%M; cout<<f[n+1][kb+N]<<'\n'; return 0; }