//項数を決めれば、単調性より2分探索できる。 #include #include #define int long long using namespace std; int f(int x, int cnt) { int ret = 0; for (int i = 0; i < cnt; i++) { ret += x; x >>= 1; } return ret; } signed main() { int d; cin >> d; int ans = d; for (int i = 1; i <= 60; i++) { int ng = 0, ok = d, mid; while (ok - ng >= 2) { mid = (ng + ok) / 2; if (f(mid, i) >= d) ok = mid; else ng = mid; } if (f(ok, i) == d) ans = min(ans, ok); } cout << ans << endl; return 0; }