15872022-11-28 16:43:06kovacs.peter.18fAutókódoláscpp11Elfogadva 50/503ms3916 KiB
#include <iostream>

using namespace std;

long long N;

int bitcount(long long n) {
    int result = 0;
    while (n) {
        n &= n - 1;
        ++result;
    }
    return result;
}

long long following(long long n) {
    n |= n - 1;
    ++n;
    n += (1LL << bitcount(N) - bitcount(n)) - 1;
    return n;
}

long long previous(long long n) {
    n &= n + 1;
    --n;
    n ^= (1LL << bitcount(n) - bitcount(N)) - 1;
    return n;
}

int main() {
    cin.sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> N;
    cout << (bitcount(N + 1) == 1 ? -1 : previous(N)) << '\n' << following(N) << '\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1892 KiB
2Elfogadva0/02ms2084 KiB
3Elfogadva2/22ms2156 KiB
4Elfogadva2/22ms2288 KiB
5Elfogadva2/22ms2364 KiB
6Elfogadva2/22ms2392 KiB
7Elfogadva2/22ms2592 KiB
8Elfogadva4/42ms2796 KiB
9Elfogadva4/42ms2876 KiB
10Elfogadva4/42ms3000 KiB
11Elfogadva4/42ms3204 KiB
12Elfogadva4/42ms3404 KiB
13Elfogadva4/42ms3612 KiB
14Elfogadva4/42ms3692 KiB
15Elfogadva4/42ms3916 KiB
16Elfogadva4/42ms3896 KiB
17Elfogadva4/42ms3892 KiB