Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <map>
  6. #include <math.h>
  7.  
  8. #define ll long long
  9.  
  10. using namespace std;
  11.  
  12. enum {
  13.     magic = 1000000007
  14. };
  15.  
  16. ll my_mod(ll a, ll n) {
  17.     return ((a % n) + n) % n;
  18. }
  19.  
  20. template<typename T>
  21. ostream &operator<<(ostream &out, vector<T> &v) {
  22.     for (int i : v) {
  23.         out << i << ' ';
  24.     }
  25.     out << '\n';
  26.     return out;
  27. }
  28.  
  29. template<typename T>
  30. istream &operator>>(istream &in, vector<T> &v) {
  31.     for (int i = 0; i < v.size(); ++i) {
  32.         in >> v[i];
  33.     }
  34.     return in;
  35. }
  36.  
  37. ll my_minys(ll s, ll a){
  38.     if ((s-a)>0) return s-a;
  39.     return 0;
  40. }
  41.  
  42. ll ldp(ll n, ll k);
  43.  
  44. ll bdp(ll n, ll k) {
  45.     if (n < 4 * k) {
  46.         return ldp(n, k);
  47.     }
  48.     long long int t = n / k - 1;
  49.     long long int s = bdp(n - t, k) /*+ t * k*/;
  50.     long long int d0 = n-(n/k -1 )*k;
  51.     long long int y = my_mod(s + t * (k) + (my_minys(s ,d0)) / (k - 1), n);
  52. //    cout << "n:" << n << "  n/k-1:" << t << "      " << y << endl;
  53.     return y;
  54. }
  55.  
  56. ll ldp(ll n, ll k) {
  57.     if (n == 1)
  58.         return 0;
  59.     return my_mod(ldp(n - 1, k) + k, n);
  60. }
  61.  
  62.  
  63. int main() {
  64.     ll n, k;
  65.     cin >> n >> k;
  66.     cout << bdp(n, k)+1 << endl;
  67. //    cout << ldp(n, k);
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement