题目链接:1214. 波动数列 - AcWing题库
标签:动态规划
(字好丑...)
AC代码:
#include<iostream>
using namespace std;
int f[1005][1005];
const int MOD = 100000007;
//返回正余数
int get_mod(int a,int b)
{
return (a%b+b)%b;
}
int main()
{
int n,s,a,b;
cin>>n>>s>>a>>b;
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)];
return 0;
}