Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
49246 | alex_liu | 【AB-1】函数 | C++ | 解答错误 | 50 | 50 MS | 20040 KB | 887 | 2022-05-04 22:22:55 |
#include<bits/stdc++.h> #define int long long using namespace std; inline int read(){ int x=0;bool f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=0;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();} return f?x:-x; } int n,k1,k2,k,f[55][400005]; const int mod=998244353; inline int quick_pow(int a,int b){ int ans=1; while(b){ if(b&1)ans*=a%11; a*=a%11; b>>=1; } return (ans+11)%11; } signed main(){ n=read(),k=read(),k1=read(),k2=read(); int x=n*k*10; f[2][quick_pow(k1,n)*k1+quick_pow(k1,n-1)*k2+x]=1; for(int i=3;i<=n+1;i++){ int q=quick_pow(k1,n-i+1); for(int j=-x;j<=x;j++){ for(int l=-k;l<=k;l++) if(j-q*l+x>=0)f[i][j+x]+=f[i-1][j-q*l+x]; if(f[i][j+x]>=mod)f[i][j+x]-=mod; } } cout<<f[n+1][k2+x]%mod<<endl; return 0; }