Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
48551 | Ender | 【AB-1】函数 | C++ | 通过 | 100 | 126 MS | 20056 KB | 785 | 2022-04-13 20:54:53 |
#include <iostream> #define ll long long using namespace std; ll f[52][40010]; const ll MOD = 998244353; ll Fp(ll a,ll b) { ll res = 1; while(b) { if(b&1) res = res * a % 11; a = a * a % 11; b>>=1; } return (res + 11) % 11; } int main() { int n,K,k1,k2,i,j,k; ll maxn = 0; cin>>n>>K>>k1>>k2; const ll AKIOI = n * K * 10; //防越界 f[2][Fp(k1,n) * k1 + Fp(k1,n - 1) * k2 + AKIOI] = 1; for(i = 3;i <= n + 1;i++) { ll z = Fp(k1,n - i + 1); for(j = -AKIOI;j <= AKIOI;j++) { for(k = -K;k <= K;k++) { if(j - z * k + AKIOI >= 0) { f[i][j + AKIOI]+=f[i - 1][j - z * k + AKIOI]; if(f[i][j + AKIOI] >= MOD) f[i][j + AKIOI]-=MOD; } } } } cout<<f[n + 1][k2 + AKIOI] % MOD; return 0; }