1587 2022. 11. 28 16:43:06 kovacs.peter.18f Autókódolás cpp11 Elfogadva 50/50 3ms 3916 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 Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1892 KiB
2 Elfogadva 0/0 2ms 2084 KiB
3 Elfogadva 2/2 2ms 2156 KiB
4 Elfogadva 2/2 2ms 2288 KiB
5 Elfogadva 2/2 2ms 2364 KiB
6 Elfogadva 2/2 2ms 2392 KiB
7 Elfogadva 2/2 2ms 2592 KiB
8 Elfogadva 4/4 2ms 2796 KiB
9 Elfogadva 4/4 2ms 2876 KiB
10 Elfogadva 4/4 2ms 3000 KiB
11 Elfogadva 4/4 2ms 3204 KiB
12 Elfogadva 4/4 2ms 3404 KiB
13 Elfogadva 4/4 2ms 3612 KiB
14 Elfogadva 4/4 2ms 3692 KiB
15 Elfogadva 4/4 2ms 3916 KiB
16 Elfogadva 4/4 2ms 3896 KiB
17 Elfogadva 4/4 2ms 3892 KiB