'commit'
This commit is contained in:
47
GESP/Level6/20240301_dp1.cpp
Normal file
47
GESP/Level6/20240301_dp1.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#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--) {
|
||||
if (i - a >= 0)
|
||||
f[i - a] = (f[i - a] + f[i]) % MOD;
|
||||
else
|
||||
f[0] = (f[i] + f[0]) % MOD;
|
||||
|
||||
if (i - b >= 0)
|
||||
f[i - b] = (f[i - b] + f[i]) % MOD;
|
||||
else
|
||||
f[0] = (f[0] + f[i]) % MOD;
|
||||
}
|
||||
for (int i = 0; i <= c; i++)
|
||||
ans = (ans + f[i]) % MOD;
|
||||
|
||||
printf("%d\n", ans);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user