规律分析:
dp集合分析:
转移方程:
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int n,s,a,b;
const int MOD=100000007;
const int N=1005;
typedef long long ll;
int f[N][N];//f[i][j] 对于前i个d,总和%n为j的方案数
int get_mod(int a,int b)
{
return (a%b+b)%b;
}
void dp()
{
f[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<n;j++)
f[i][j]=(f[i-1][get_mod(j-a*i,n)]+f[i-1][get_mod(j+b*i,n)])%MOD;
cout<<f[n-1][get_mod(s,n)];
}
int main()
{
cin>>n>>s>>a>>b;
dp();
}
借鉴了y总的讲解和一位同学的题解,写的非常棒