144922025-01-12 15:02:13fzs1969Autókódoláspython3Accepted 50/5017ms3320 KiB
def kettesbe(szám):
    számjegyek = []
    while szám > 0:
        számjegyek.append(szám % 2)
        szám = szám // 2
    számjegyek.append(0)
    return számjegyek
def számmá(számjegyek):
    érték = 0
    hossz = len(számjegyek)
    for i in range(hossz-1, 0-1, -1):
        érték = 2*érték + számjegyek[i]
    return érték

kód = int(input())
lista = kettesbe(kód)
# print(lista)
# nagyobb
hely = 0
while lista[hely] == 0:
    hely += 1
db = 0
while lista[hely] == 1:
    lista[hely] = 0
    hely += 1
    db += 1
lista[hely] = 1
for i in range(db-1):
    lista[i] = 1
# print(lista)
következő = számmá(lista)
# előző meghatározása
lista = kettesbe(kód)+[0]
hely = 0
if lista[0] == 1:
    while lista[hely] == 1:
        hely += 1
    # print(hely, len(lista))
    if hely != len(lista)-2:
        while lista[hely] == 0:
            hely += 1
        lista[hely] = 0
        lista[hely-1] = 1
        lista = sorted(lista[:(hely-1)]) + lista[hely-1:]
        előző = számmá(lista)
    else:
        előző = -1
else:
    while lista[hely] == 0:
        hely += 1
    # print(hely)
    lista[hely] = 0
    lista[hely-1] = 1
    előző = számmá(lista)
print(előző)
print(következő)
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/017ms3124 KiB
2Accepted0/017ms3124 KiB
3Accepted2/216ms3120 KiB
4Accepted2/216ms3120 KiB
5Accepted2/216ms3196 KiB
6Accepted2/216ms3140 KiB
7Accepted2/216ms3228 KiB
8Accepted4/416ms3112 KiB
9Accepted4/416ms3152 KiB
10Accepted4/417ms3124 KiB
11Accepted4/416ms3132 KiB
12Accepted4/416ms3320 KiB
13Accepted4/417ms3164 KiB
14Accepted4/416ms3236 KiB
15Accepted4/416ms3228 KiB
16Accepted4/417ms3136 KiB
17Accepted4/417ms3220 KiB