Advertisement
Guest User

Untitled

a guest
May 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define MOD 666013
  3.  
  4. using namespace std;
  5.  
  6. ifstream fin("nmult.in");
  7. ofstream fout("nmult.out");
  8.  
  9. int n, k, w;
  10. int dp[1000][1000];
  11.  
  12. bool Pot(int element, int nivel)
  13. {
  14. return element <= n && element + w * (k - nivel) <= n;
  15. }
  16.  
  17. int Solve(int current_element, int nivel)
  18. {
  19. if (current_element > 0)
  20. if (dp[current_element][nivel + 1] != 0)
  21. return dp[current_element][nivel + 1];
  22. if (nivel == k)
  23. return 1;
  24. for (int next_element = current_element + w; Pot(next_element, nivel + 1) == true; ++next_element)
  25. {
  26. if (nivel == 0)
  27. {
  28. dp[0][0] = (dp[0][0] + Solve(next_element, nivel + 1)) % MOD;
  29. }
  30. else
  31. {
  32. dp[current_element][nivel + 1] = (dp[current_element][nivel + 1] + Solve(next_element, nivel + 1)) % MOD;
  33. }
  34. }
  35. if (nivel == 0)
  36. return dp[0][0];
  37. else
  38. return dp[current_element][nivel + 1];
  39. }
  40.  
  41. int main()
  42. {
  43. fin >> n >> k >> w;
  44. for (int i = 1; i <= n; ++i)
  45. {
  46. for (int j = 1; j <= k; ++j)
  47. {
  48. dp[i][j] = 0;
  49. }
  50. }
  51. fout << Solve(1 - w, 0);
  52. fin.close();
  53. fout.close();
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement