提交时间:2022-04-14 13:23:21

运行 ID: 48636

#include<bits/stdc++.h> using namespace std; inline long long read() { int x=0,f=1; char t=getchar(); while(t<'0'||t>'9'){if(t=='-')f=0;t=getchar();} while(t>='0'&&t<='9')x=(x<<1)+(x<<3)+(t^48),t=getchar(); return f?x:-x; } const int PY=1e5+100,mod=998244353; long long n,K,k1,k2,f[55][500000],pw[100]; int main() { n=read(),K=read(),k1=read(),k2=read(); pw[0]=1; for(int i=1;i<=n+1;i++) pw[i]=(pw[i-1]*k1%11+11)%11; f[2][pw[n]*k1+pw[n-1]*k2+PY]=1; for(int i=3;i<=n+1;i++) for(long long k=-K;k<=K;k++) for(long long o=-PY+k*pw[n-i+1];o<=PY+k*pw[n-i+1];o++) f[i][o+PY]=(f[i][o+PY]+f[i-1][o-pw[n-i+1]*k+PY])%mod; cout<<f[n+1][k2+PY]; return 0; }