提交时间:2022-04-13 22:59:30

运行 ID: 48589

#include <bits/stdc++.h> using namespace std; #define ll long long ll n,K,k1,k2; const ll d=998244353998244353; ll f[55][40005];//f[i][j]表示函数的前i项,值为j的方案数 ll Qp(ll a,ll b) { ll ans=1; while(b) { if(b&1) ans=ans*a%11; a=a*a%11; b>>=1; } return (ans+11)%11; } int main() { cin>>n>>K>>k1>>k2; ll lhn=n*K*10; //防止数组下标出现负数 f[2][Qp(k1,n)*k1+Qp(k1,n)*k2+lhn]=1; for(int i=3; i<=n+1; i++) { ll ki=Qp(k1,n-i+1); for(int j=-lhn; j<=lhn; j++) for(int k=-K; k<=K; k++) if(j-ki*k+lhn>=0) f[i][j+lhn]+=f[i][j-ki*k+lhn]; } cout<<f[n+1][k2+lhn]%d<<endl; return 0; }