提交时间:2022-04-14 14:28:49

运行 ID: 48650

#include <bits/stdc++.h> using namespace std; #define ll long long #define Max 12000 ll Fmod(ll x,ll p) { if(x<0) return (x%p+p)%p; return x%p; } ll dp[56][20010],n,K,k1,k2; #define mod 998244353 int main() { ll Kpow[52]= {1}; cin>>n>>K>>k1>>k2; for(int i=1; i<=n+2; i++) Kpow[i]=Fmod(Kpow[i-1]*k1,11); dp[2][Kpow[n]*k1+Kpow[n-1]*k2+Max]=1; for(int i=3; i<=n+1; i++) for(int j=-Max; j<=Max; j++) for(int k=-K; k<=K; k++) if(-Max<=j-k*Kpow[n-i+1]&&j-k*Kpow[n-i+1]<=Max) dp[i][j+Max]+=dp[i-1][j-k*Kpow[n-i+1]+Max],dp[i][j+Max]%=mod; printf("%lld\n",dp[n+1][k2+Max]); return 0; }