fork download
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<climits>
  6.  
  7. #define lli long long int
  8. #define mod 1000000007
  9.  
  10. using namespace std;
  11.  
  12. int n, k, d;
  13. lli dp[107][2];
  14.  
  15. lli recur(lli num, bool activated)
  16. {
  17. if(dp[num][activated]!=-1)
  18. return dp[num][activated];
  19.  
  20. if(num==0)
  21. {
  22. if(!activated)
  23. return 0;
  24. else
  25. return 1;
  26. }
  27.  
  28. lli ans=0, i;
  29.  
  30. for(i=1; i<=k; i++)
  31. if(num-i>=0)
  32. {
  33. if(i>=d)
  34. ans=(ans+recur(num-i, 1))%mod;
  35. else
  36. ans=(ans+recur(num-i, activated))%mod;
  37. }
  38. else
  39. break;
  40.  
  41. return dp[num][activated]=ans;
  42. }
  43.  
  44. int main()
  45. {
  46. lli ans, i;
  47.  
  48. for(i=0; i<107; i++)
  49. {
  50. dp[i][0]=-1;
  51. dp[i][1]=-1;
  52. }
  53.  
  54. cin >> n >> k >> d;
  55.  
  56. ans=recur(n, 0);
  57.  
  58. cout << ans << endl;
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
0