Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. long long m, d, mid, high, low=0, mini=1000000000;
  2.  
  3. int check(long long num)
  4. {
  5.    
  6.     long long divi = 1, day=1, sum=0;
  7.    
  8.     while (num/divi > 0)
  9.     {
  10.         if (sum > m) return 0;
  11.         else if (sum == m) return 1;
  12.        
  13.         if (day == 1) sum += num;
  14.         else if (day == 2) sum += num/day;
  15.         else
  16.         {
  17.             divi *= d*(d+day-2);
  18.             sum += num/divi;
  19.         }
  20.         day++;
  21.     }  
  22.    
  23.     return 2;
  24. }
  25.  
  26. int main()
  27. {
  28.     cin >> m >> d;
  29.     high = m;
  30.    
  31.     while (low < high)
  32.     {
  33.         mid = (high + low) / 2;
  34.        
  35.         if (check(mid) == 1)
  36.         {
  37.             mini = mid;
  38.             break;
  39.         }
  40.         else if (check(mid) == 0)
  41.         {
  42.             if (mid < mini) mini = mid;
  43.             high = mid;
  44.         }
  45.        
  46.         else low = mid;
  47.        
  48.     }
  49.    
  50.     cout << mini;
  51.    
  52.    
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement