def jedynki(liczba):
j = 0
while liczba > 0:
if liczba % 2 == 1:
j += 1
liczba //= 2
return j
# end def
wynik = []
def main():
n = int(input())
if n == 1:
wynik.append(1)
return 1
if n == 2:
wynik.append(1)
wynik.append(2)
return 2
zliczacz = 0
liczba = 0
while zliczacz < n:
liczba += 1
zliczacz += jedynki(liczba)
wynik.append(liczba)
if zliczacz > n:
indeks = len(wynik) - 1
while True:
doodjecia = jedynki(wynik[indeks])
if zliczacz - doodjecia < n:
indeks -= 1
else:
zliczacz -= doodjecia
wynik[indeks] = 0
break
ile = 0
for i in range(len(wynik)):
if wynik[i] != 0:
ile += 1
return ile
# end def
print(main())
for k in range(len(wynik)-1, -1, -1):
if wynik[k] != 0:
if k != 0:
print(wynik[k], end = " ")
else:
print(wynik[k], end = "\n")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | def jedynki(liczba): j = 0 while liczba > 0: if liczba % 2 == 1: j += 1 liczba //= 2 return j # end def wynik = [] def main(): n = int(input()) if n == 1: wynik.append(1) return 1 if n == 2: wynik.append(1) wynik.append(2) return 2 zliczacz = 0 liczba = 0 while zliczacz < n: liczba += 1 zliczacz += jedynki(liczba) wynik.append(liczba) if zliczacz > n: indeks = len(wynik) - 1 while True: doodjecia = jedynki(wynik[indeks]) if zliczacz - doodjecia < n: indeks -= 1 else: zliczacz -= doodjecia wynik[indeks] = 0 break ile = 0 for i in range(len(wynik)): if wynik[i] != 0: ile += 1 return ile # end def print(main()) for k in range(len(wynik)-1, -1, -1): if wynik[k] != 0: if k != 0: print(wynik[k], end = " ") else: print(wynik[k], end = "\n") |
English