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 |