Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define MOD 666013
- using namespace std;
- ifstream fin("nmult.in");
- ofstream fout("nmult.out");
- int n, k, w;
- int dp[1000][1000];
- bool Pot(int element, int nivel)
- {
- return element <= n && element + w * (k - nivel) <= n;
- }
- int Solve(int current_element, int nivel)
- {
- if (current_element > 0)
- if (dp[current_element][nivel + 1] != 0)
- return dp[current_element][nivel + 1];
- if (nivel == k)
- return 1;
- for (int next_element = current_element + w; Pot(next_element, nivel + 1) == true; ++next_element)
- {
- if (nivel == 0)
- {
- dp[0][0] = (dp[0][0] + Solve(next_element, nivel + 1)) % MOD;
- }
- else
- {
- dp[current_element][nivel + 1] = (dp[current_element][nivel + 1] + Solve(next_element, nivel + 1)) % MOD;
- }
- }
- if (nivel == 0)
- return dp[0][0];
- else
- return dp[current_element][nivel + 1];
- }
- int main()
- {
- fin >> n >> k >> w;
- for (int i = 1; i <= n; ++i)
- {
- for (int j = 1; j <= k; ++j)
- {
- dp[i][j] = 0;
- }
- }
- fout << Solve(1 - w, 0);
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement