2119 2022. 12. 20 12:35:30 1478 Autókódolás cpp11 Részben helyes 48/50 3ms 4252 KiB
#include <bits/stdc++.h>

using namespace std;


int main()
{
    //ifstream cin("be.txt");
    long long n;
    cin>>n;

    long long tempN = n;
    long long multTwo = 1;

    ///kisebb
    long long ans1 = 0;
    while(tempN > 0){
        ans1 += multTwo * (tempN%2);
        if(tempN%2 == 0 && tempN/2 > 0 && (tempN/2)%2 == 1){
        ///aktualis bit
           ans1 += multTwo;
        ///maradek
           tempN/=4;
           ans1 += tempN*4*multTwo;
           break;
        }
        multTwo *= 2;
        tempN /= 2;
    }

    if(ans1 == 1 || ans1 == n) cout<<-1<<'\n';
    else cout<<ans1<<'\n';

    ///nagyobb
    tempN = n;
    multTwo = 1;
    int numberOfZerosAtEnd = 0;
    while(tempN > 0 && tempN%2 == 0){
        numberOfZerosAtEnd++;
        multTwo *= 2;
        tempN /= 2;
    }
    //cout<<numberOfZerosAtEnd<<'\n';
    long long ans2 = 0;
    while(tempN > 0){
        if(tempN/2 == 0 || tempN%2 == 1 && (tempN/2)%2 == 0){
        ///aktualis bit
            while(numberOfZerosAtEnd){
                ans2/=2;
                numberOfZerosAtEnd--;
            }

            ans2 += multTwo*2;

        ///maradek
           tempN/=4;
           ans2 += tempN*4*multTwo;
           break;
        }
        else{
            ans2 += multTwo * (tempN%2);
        }

        multTwo *= 2;
        tempN /= 2;
    }
    cout<<ans2<<'\n';





    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 48/50
1 Elfogadva 0/0 3ms 1880 KiB
2 Elfogadva 0/0 2ms 2068 KiB
3 Elfogadva 2/2 2ms 2144 KiB
4 Elfogadva 2/2 2ms 2276 KiB
5 Részben helyes 1/2 2ms 2488 KiB
6 Részben helyes 1/2 2ms 2704 KiB
7 Elfogadva 2/2 2ms 2760 KiB
8 Elfogadva 4/4 2ms 2968 KiB
9 Elfogadva 4/4 2ms 3164 KiB
10 Elfogadva 4/4 2ms 3296 KiB
11 Elfogadva 4/4 2ms 3508 KiB
12 Elfogadva 4/4 2ms 3620 KiB
13 Elfogadva 4/4 2ms 3828 KiB
14 Elfogadva 4/4 2ms 4020 KiB
15 Elfogadva 4/4 2ms 4252 KiB
16 Elfogadva 4/4 2ms 4108 KiB
17 Elfogadva 4/4 2ms 4240 KiB