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") |