129222025-01-03 15:36:04ercseferencAutókódoláscpp17Időlimit túllépés 42/50298ms516 KiB
#include <iostream>
#include <cmath>
using namespace std;
int egy(long long n){
    int s=0;
    while(n!=0){
        if(n%2==1)s++;
        n=n/2;}
    return s;}
int hat(long long n){
    int s=0;
    while(n!=0){
        n=n/2; s++;}
    return s;}
long long mini(long long n){
    long long s=1;
    for(int i=0; i<hat(n)-1; i++){
        s=s*2;}
    return s;}
long long kerkis(long long n){
    int i=n-1;
    while(egy(i)!=egy(n)){i--;}
    return i;
    }
long long kernag(long long n){
    int i=n+1;
    while(egy(i)!=egy(n)){i++;}
    return i;}
int main()
{
    long long n,kis,nagy;
    cin>>n;
    long long sorsz=n-mini(n);
    if(n==1){kis=-1; nagy=2;}
    else if(egy(n)==1){kis=n/2; nagy=n*2;}
    else if(hat(n)==egy(n)){kis=-1; nagy=2*mini(n)+sorsz;}
    else if(sorsz==pow(2,egy(n)-1)){kis=mini(n)-pow(2,hat(n)-egy(n)-1); nagy=kernag(n);}
    else if(n==2*mini(n)-pow(2,hat(n)-egy(n))){kis=kerkis(n); nagy=2*mini(n)+pow(2,egy(n)-1)-1;}
    else {kis=kerkis(n); nagy=kernag(n);}
    cout<<kis<<endl<<nagy;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base42/50
1Elfogadva0/01ms508 KiB
2Elfogadva0/01ms500 KiB
3Elfogadva2/21ms320 KiB
4Elfogadva2/21ms320 KiB
5Elfogadva2/21ms320 KiB
6Elfogadva2/21ms320 KiB
7Elfogadva2/21ms392 KiB
8Elfogadva4/41ms384 KiB
9Elfogadva4/41ms320 KiB
10Elfogadva4/41ms320 KiB
11Elfogadva4/41ms320 KiB
12Elfogadva4/41ms320 KiB
13Elfogadva4/41ms500 KiB
14Elfogadva4/42ms320 KiB
15Elfogadva4/443ms516 KiB
16Időlimit túllépés0/4228ms512 KiB
17Időlimit túllépés0/4298ms320 KiB