217692026-01-13 20:36:36hunzombiAutókódoláscpp17Elfogadva 50/501ms508 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll findHigh(ll n) {
    ll c = n, c0 = 0, c1 = 0;
    while ((c & 1) == 0 && c != 0 ) {
        c0++;
        c >>= 1;
    }
    while ((c & 1) == 1) {
        c1++;
        c >>= 1;
    }
    if (c0 + c1 == 0 || c0 + c1 == 63) return -1;
    return n + (1LL << c0) + (1LL << (c1 - 1)) - 1;
}

ll findLow(ll n) {
    ll temp = n, c0 = 0, c1 = 0;
    while ((temp & 1) == 1) {
        c1++;
        temp >>= 1;
    }
    if (temp == 0) return -1;
    while ((temp & 1) == 0 && temp != 0) {
        c0++;
        temp >>= 1;
    }
    return n - (1LL << c1) - (1LL << (c0 - 1)) + 1;
}

int main()
{
    ll n;
    cin >> n;
    cout << findLow(n) << '\n' << findHigh(n) << '\n';
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms396 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva4/41ms316 KiB
9Elfogadva4/41ms508 KiB
10Elfogadva4/41ms316 KiB
11Elfogadva4/41ms316 KiB
12Elfogadva4/41ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva4/41ms508 KiB
16Elfogadva4/41ms508 KiB
17Elfogadva4/41ms316 KiB