amcbn

Croseta

Nov 9th, 2021
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. /* [A][M][C][B][N] / [K][R][I][P][6][8] */
  2. #include <bits/stdc++.h>
  3. #pragma warning(disable : 4996 4267 4068)
  4. using namespace std;
  5. template<typename type>
  6. using matrix = vector<vector<type>>;
  7. typedef long long ll;
  8. const char sp = ' ', nl = '\n';
  9. const int MOD = 1000000007;
  10.  
  11. ll compute(ll n) {
  12.     ll cnt(0);
  13.     while (n) {
  14.         cnt += n;
  15.         if (n == 1) break;
  16.         n = max(n / 3 - 1, 0ll) + 1;
  17.     }
  18.     return cnt;
  19. }
  20.  
  21. ll find(ll n) {
  22.     int st = 1, dr = 1.5e9, m;
  23.     while (st <= dr) {
  24.         m = (st + dr) / 2;
  25.         if (compute(m) == n)
  26.             return m;
  27.         else {
  28.             if (compute(m) < n)
  29.                 st = m + 1;
  30.             else
  31.                 dr = m - 1;
  32.         }
  33.     }
  34. }
  35.  
  36. int main() {
  37.     ios::sync_with_stdio(NULL);
  38.     cin.tie(nullptr), cout.tie(nullptr);
  39.     (void)!freopen("croseta.in", "r", stdin);
  40.     (void)!freopen("croseta.out", "w", stdout);
  41.     ll n;
  42.     cin >> n;
  43.     cout << find(n / 2);
  44. }
Advertisement
Add Comment
Please, Sign In to add comment