提交时间:2022-05-04 22:02:57

运行 ID: 49227

#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[52][40000]; 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]%mod; } } cout<<f[n+1][k2+x]%mod<<endl; return 0; }