139692025-01-09 13:04:50ercseferencAutókódoláscpp17Hibás válasz 25/501ms552 KiB
#include <bits/stdc++.h>
using namespace std;
bool a[500];
int main()
{
    long long n; //ifstream f("szamok.txt"); f>>n;
    cin>>n;
    int k=0,egy=0; long long kis,nagy; long long m=n;
    while(n!=0){a[k]=n%2; n=n/2; k++;}
    for(int i=0; i<k; i++){if(a[i])egy++;}
    if(m==0){kis=-1; nagy=-1;}
    else if(egy==1){kis=m/2;}
    else{
        int k2=0;
        while(a[k2]==1){k2++;}
        if(k2==k)kis=-1;
        else{
            while(a[k2]==0){k2++;}
            a[k2]=0; a[k2-1]=1;
            int t=1; kis=0;
            for(int i=0; i<=k; i++){kis+=a[i]*t; t*=2;}}}
    for(int i=0; i<500; i++){a[i]=0;}
    n=m; k=0; while(n!=0){a[k]=n%2; n=n/2; k++;}
    if(m==0){kis=-1; nagy=-1;}
    else if(egy==1)nagy=2*m;
    else{
        bool vannul=0; int mnul;
        for(int i=0; i<k; i++){
            if(a[i]==0 && vannul){mnul=i; break;}
            if(a[i]==0)vannul=1;}
        if(mnul<k){
            a[mnul]=1;
            for(int i=0; i<mnul; i++){a[i]=0;}
            for(int i=0; i<egy-mnul+2; i++){a[i]=1;}}
        else{
            if(k==egy){a[k]=1; a[k-1]=0;}
            else{
                int nulla;
                int t=1; kis=0;
            for(int i=0; i<=k; i++){kis+=a[i]*t; t*=2;}for(int i=0; i<k; i++){if(a[i]==0)nulla=i;}
                if(nulla==0){
                    for(int i=0; i<egy-1; i++){a[i]=1;} a[egy-1]=0;
                    a[egy]=0; a[egy+1]=1;}
                else{a[nulla]=1; a[nulla-1]=0;}}}
        long long t=1; nagy=0;
            for(int i=0; i<=k; i++){nagy+=a[i]*t; t*=2;}}
    cout<<kis<<endl<<nagy;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base25/50
1Elfogadva0/01ms500 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms508 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Részben helyes1/21ms316 KiB
8Részben helyes2/41ms552 KiB
9Részben helyes2/41ms320 KiB
10Részben helyes2/41ms316 KiB
11Részben helyes2/41ms316 KiB
12Részben helyes2/41ms500 KiB
13Elfogadva4/41ms316 KiB
14Részben helyes2/41ms316 KiB
15Részben helyes2/41ms316 KiB
16Részben helyes2/41ms316 KiB
17Hibás válasz0/41ms316 KiB