6747 2023. 12. 18 17:59:34 szasztunde Autókódolás cpp17 Részben helyes 46/50 4ms 5584 KiB
#include <iostream>

using namespace std;

int main()
{
    int a[100000]={0},b[100000]={0},m=0;
    long long n;
    cin>>n;
    int t=n;
    while(n>0)
    {
        m++; a[m]=n%2; b[m]=n%2;
        n=n/2;
    }
    ///1
    int i=1,jo=0;
    while(i<m && !jo)
        if(a[i]==0 && a[i+1]==1) jo=1;
        else i++;
    a[i]=1; a[i+1]=0;
    if (a[m]==0)
    {
        int e=1,u=m-1;
        while(e<u){
            while(a[e]==0) e++;
            while(a[u]==1) u--;
            if(e<u) swap(a[e],a[u]);
            e++; u--;
        }
    }
    long long x=0,h=1;
    for(int j=1; j<=m; j++)
    {
        x=x+a[j]*h;
        h=h*2;
    }
    cout<<x<<endl;
    ///2
    i=1,jo=0;
    while(i<m && !jo)
        if(b[i]==1 && b[i+1]==0) jo=1;
        else i++;
    if(i==m) {b[i]=0; b[++m]=1; } else {b[i]=0; b[i+1]=1;}
    int e=1,u=i-1;
    while(e<u){
        while(b[e]==1) e++;
        while(b[u]==0) u--;
        if(e<u) swap(b[e],b[u]);
        e++; u--;
    }
    x=0; h=1;
    for(int j=1; j<=m; j++)
    {
        x=x+b[j]*h;
        h=h*2;
    }
    cout<<x;
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 46/50
1 Elfogadva 0/0 3ms 3420 KiB
2 Elfogadva 0/0 3ms 3656 KiB
3 Részben helyes 1/2 3ms 3704 KiB
4 Elfogadva 2/2 3ms 3924 KiB
5 Elfogadva 2/2 3ms 4136 KiB
6 Részben helyes 1/2 3ms 4376 KiB
7 Elfogadva 2/2 3ms 4608 KiB
8 Elfogadva 4/4 3ms 4580 KiB
9 Elfogadva 4/4 3ms 4644 KiB
10 Elfogadva 4/4 3ms 4652 KiB
11 Elfogadva 4/4 3ms 4928 KiB
12 Elfogadva 4/4 4ms 5052 KiB
13 Részben helyes 2/4 3ms 5144 KiB
14 Elfogadva 4/4 3ms 5356 KiB
15 Elfogadva 4/4 3ms 5440 KiB
16 Elfogadva 4/4 3ms 5456 KiB
17 Elfogadva 4/4 3ms 5584 KiB