fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. #define pb push_back
  6. #define all(x) x.begin(), x.end()
  7. #include <ext/pb_ds/assoc_container.hpp>
  8. #include <ext/pb_ds/tree_policy.hpp>
  9. using namespace __gnu_pbds;
  10. template <typename T> using o_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
  11. template <typename T, typename R> using o_map = tree<T, R, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
  12. typedef long long ll;
  13.  
  14. #define inf 1e9
  15. #define MOD 1000000007
  16. #define vint vector<int>
  17. #define vll vector<ll>
  18. #define no cout << "NO" << endl;
  19.  
  20. #define yes cout << "YES" << endl;
  21. ll binpow(ll n1 , ll x ) {
  22. ll ans1 = 1 ;
  23. while (x -- ) {
  24. ans1*= n1 ;
  25. ans1%=MOD ;
  26. }
  27. return ans1 ;
  28. }
  29. ll ans = 0 ;
  30. ll n , k , d ;
  31. void f (int index , int sum ,bool test ) {
  32. if (index > k ) {
  33. if (sum >=n && test ) ans ++ ;
  34. else return ;
  35. }
  36. if (test && sum >= n ) {
  37. ll reste = k - index ;
  38. ll plus = 1 ;
  39. if (reste > 0 ) plus += binpow (k, reste ) ;
  40. //ans+=(plus % MOD);
  41. ans%=MOD;
  42. cout <<"p " << plus << " ans " << ans << endl ;
  43. return;
  44. }
  45. for (int i = 1 ; i<= k ; i++) {
  46. if (i>=d ) f(index +1 , sum + i , true );
  47. else f(index +1 , sum + i , test ) ;
  48. }
  49.  
  50.  
  51. }
  52. void solve(){
  53. cin >> n>> k >> d ;
  54. ans = 0 ;
  55. f(1, 0 , false );
  56. cout << ans << endl ;
  57. }
  58.  
  59.  
  60. int main() {
  61. ios::sync_with_stdio(false);
  62. cin.tie(nullptr);
  63.  
  64. #ifndef ONLINE_JUDGE
  65. freopen("input.txt", "r", stdin);
  66. freopen("output.txt", "w", stdout);
  67. #endif
  68.  
  69. int t = 1;
  70.  
  71. // cin >> t;
  72. while (t--) {
  73. solve();
  74. }
  75. return 0;
  76. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
0