21152022-12-20 12:17:331478Autókódoláscpp11Részben helyes 45/503ms3968 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;
    }
    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 == 1 && tempN/2 == 0 || (tempN/2)%2 == 0){
        ///aktualis bit
            //cout<<ans2<<'\n';
            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;





    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base45/50
1Elfogadva0/03ms2020 KiB
2Elfogadva0/02ms2276 KiB
3Részben helyes1/22ms2404 KiB
4Elfogadva2/22ms2760 KiB
5Részben helyes1/22ms2876 KiB
6Részben helyes1/22ms2936 KiB
7Elfogadva2/22ms3008 KiB
8Elfogadva4/42ms3080 KiB
9Elfogadva4/42ms3328 KiB
10Elfogadva4/42ms3420 KiB
11Elfogadva4/42ms3492 KiB
12Elfogadva4/42ms3684 KiB
13Részben helyes2/42ms3892 KiB
14Elfogadva4/42ms3968 KiB
15Elfogadva4/42ms3960 KiB
16Elfogadva4/42ms3964 KiB
17Elfogadva4/42ms3964 KiB