40 lines
692 B
C++
40 lines
692 B
C++
|
|
#include <bits/stdc++.h>
|
|||
|
|
using namespace std;
|
|||
|
|
const int N = 2e5 + 10;
|
|||
|
|
const int MOD = 1e9 + 7;
|
|||
|
|
int n, a, b, c;
|
|||
|
|
int f[N];
|
|||
|
|
int ans;
|
|||
|
|
int main() {
|
|||
|
|
#ifndef ONLINE_JUDGE
|
|||
|
|
freopen("20240301.in", "r", stdin);
|
|||
|
|
#endif
|
|||
|
|
/**
|
|||
|
|
例1:
|
|||
|
|
1 1 1 1
|
|||
|
|
答案:1
|
|||
|
|
|
|||
|
|
例2:
|
|||
|
|
114 51 4 1
|
|||
|
|
答案:176
|
|||
|
|
|
|||
|
|
例3:
|
|||
|
|
114514 191 9 810
|
|||
|
|
答案:384178446
|
|||
|
|
*/
|
|||
|
|
// 从大向小推
|
|||
|
|
cin >> n >> a >> b >> c;
|
|||
|
|
|
|||
|
|
f[n] = 1;
|
|||
|
|
|
|||
|
|
for (int i = n; i > c; i--) {
|
|||
|
|
f[max(i - a, 0)] = (f[max(i - a, 0)] + f[i]) % MOD;
|
|||
|
|
f[max(i - b, 0)] = (f[max(i - b, 0)] + f[i]) % MOD;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (int i = 0; i <= c; i++)
|
|||
|
|
ans = (ans + f[i]) % MOD;
|
|||
|
|
|
|||
|
|
printf("%d\n", ans);
|
|||
|
|
return 0;
|
|||
|
|
}
|