128252025-01-01 23:21:25BucsMateAutókódoláscpp17Részben helyes 45/501ms512 KiB
#include <iostream>

using namespace std;

long long calc_lower(long long N)
{
    int bitRep[100] = {};
    long long mask = 1;
    for(int i = 63; i >= 0; i--){
        if(N & mask){
            bitRep[i] = 1;
        }
        mask *= 2;
    }
    for(int i = 63; i > 0; i--){
        if(bitRep[i] == 0 && bitRep[i-1] == 1){
            bitRep[i] = 1;
            bitRep[i-1] = 0;
            break;
        }
    }
    long long sol = 0, multiplier = 1;
    for(int i = 0; i <= 63; i++){
        sol += bitRep[63-i] * multiplier;
        multiplier *= 2;
    }
    return sol;
}

long long calc_higher(long long N)
{
    int bitRep[100] = {};
    long long mask = 1;
    for(int i = 63; i >= 0; i--){
        if(N & mask){
            bitRep[i] = 1;
        }
        mask *= 2;
    }
    int nrOne = 0, index = 0;

    for(int i = 63; i > 0; i--){
        if(bitRep[i] == 1){
            nrOne++;
        }
        if(bitRep[i] == 1 && bitRep[i-1] == 0){
            bitRep[i] = 0;
            bitRep[i-1] = 1;
            index = i;
            break;
        }
    }
    nrOne--;
    for(int i = index; i <= 63; i++){
        bitRep[i] = 0;
    }
    for(int i = 63; 63-i < nrOne; i--){
        bitRep[i] = 1;
    }

    long long sol = 0, multiplier = 1;
    for(int i = 0; i <= 63; i++){
        sol += bitRep[63-i] * multiplier;
        multiplier *= 2;
    }
    return sol;
}

int main()
{
    long long N;
    cin >> N;
    cout << calc_lower(N) << endl;
    cout << calc_higher(N) << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base45/50
1Elfogadva0/01ms320 KiB
2Elfogadva0/01ms512 KiB
3Részben helyes1/21ms320 KiB
4Elfogadva2/21ms320 KiB
5Részben helyes1/21ms320 KiB
6Részben helyes1/21ms320 KiB
7Elfogadva2/21ms320 KiB
8Elfogadva4/41ms320 KiB
9Elfogadva4/41ms508 KiB
10Elfogadva4/41ms320 KiB
11Elfogadva4/41ms320 KiB
12Elfogadva4/41ms320 KiB
13Részben helyes2/41ms320 KiB
14Elfogadva4/41ms320 KiB
15Elfogadva4/41ms320 KiB
16Elfogadva4/41ms320 KiB
17Elfogadva4/41ms320 KiB