import sys import typing import collections def _debug(*args): print(*args, file=sys.stderr) def count_bits_set(x: int) -> int: return bin(x).count('1') def solve(n: int) -> typing.Sequence[int]: out = collections.deque() i = 1 while True: c = count_bits_set(i) n -= c if n >= 0: out.appendleft(i) if n == 0: return out else: for j, el in enumerate(out): if n + count_bits_set(el) == 0: del out[j] break out.appendleft(i) return out i += 1 def main(): readline = sys.stdin.readline write = sys.stdout.write n = int(readline().strip()) result = solve(n) write(f'{len(result)}\n') for item in result: write(f'{item} ') sys.stdout.flush() if __name__ == '__main__': main()
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 | import sys import typing import collections def _debug(*args): print(*args, file=sys.stderr) def count_bits_set(x: int) -> int: return bin(x).count('1') def solve(n: int) -> typing.Sequence[int]: out = collections.deque() i = 1 while True: c = count_bits_set(i) n -= c if n >= 0: out.appendleft(i) if n == 0: return out else: for j, el in enumerate(out): if n + count_bits_set(el) == 0: del out[j] break out.appendleft(i) return out i += 1 def main(): readline = sys.stdin.readline write = sys.stdout.write n = int(readline().strip()) result = solve(n) write(f'{len(result)}\n') for item in result: write(f'{item} ') sys.stdout.flush() if __name__ == '__main__': main() |