Logo
(追記) (追記ここまで)

19978번 - Вещественные числа 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 512 MB762100.000%

문제

Первое правило вещественных чисел --- не используйте вещественные числа


Подслушано в Заколково

Петя работает в наукограде Заколково. Он занимается разработкой нового микропроцессора Чебур. Поскольку ведущий архитектор микропроцессора очень не любит числа с плавающей точкой, вещественные числа в микропроцессоре Чебур хранятся в формате с фиксированной точкой.

Внутренние регистры процессора хранят вещественные числа в виде двоичной дроби ровно с $n$ двоичными знаками после точки. Число знаков до точки не ограничено. В таком формате представимы числа, равные $p/2^n$ для некоторого целого $p$. Число $x,ドル полученное в результате выполнения арифметических операций над вещественными числами, при сохранении в регистр процессора заменяется на ближайшее представимое число, а если $x$ находится ровно посередине между двумя представимыми числами, то на большее из них.

Для хранения чисел в памяти используется формат, при котором вещественное число представляется в виде двоичной дроби ровно с $k$ двоичными знаками после точки ($k \le n,ドル число знаков до точки, так же как и у регистров, не ограничено). В таком формате представимы в точности числа, равные $p/2^k$ для некоторого целого $p$. При загрузке числа из памяти в регистр процессора число дополняется нулями до $n$ двоичных знаков после точки. При сохранении числа $y$ в память из регистра оно заменяется на ближайшее представимое число, а если $y$ находится ровно посередине между двумя представимыми числами, то на большее их них.

Например, пусть $n = 10,ドル $k = 5$. Число 1 хранится в памяти в виде 1ドル.00000_2,ドル число 3 хранится в памяти как 11ドル.00000_2$. При загрузке в регистры числа дополняются нулями до 1ドル.0000000000_2$ и 11ドル.0000000000_2,ドル соответственно. Пусть было выполнено деление 1 на 3. Если результат деления 1ドル/3$ записать в двоичной системе, получится 0ドル.(01)_2$ --- здесь, как и в случае десятичных дробей, часть в скобках означает период бесконечной двоичной дроби. При сохранении в регистре процессора эта дробь будет приближена значением 0ドル.0101010101_2$. Умножим теперь это число на 3. Получится число 0ドル.1111111111_2,ドル в таком же виде оно хранится в регистре процессора. При сохранении в память оно приближается числом 1ドル.00000_2,ドル как ближайшей двоичной дробью с 5 знаками после точки.

Петя заметил, что если загрузить в регистры единицу и целое число $v,ドル поделить 1 на $v,ドル затем умножить результат деления на $v$ и сохранить результат умножения в память, то итоговое сохраненное значение не всегда равно 1. Например, если $v = 40,ドル то после деления в регистре оказывается значение 0ドル.0000011010_2,ドル после умножения на $v$ значение 1ドル.0000010000_2,ドル после сохранения в память оно преобразуется в 1ドル.00001_2$. Петя называет такие числа неудачными.

Петю заинтересовал вопрос, какие целые числа от 1 до $r$ являются неудачными. Помогите ему выяснить это.

입력

Первая строка входного файла содержит три целых числа $n,ドル $k$ и $r$ (1ドル \le k \le n \le 100,ドル 1ドル \le r \le 1000$).

출력

В первой строке выходного файла выведите число $t$ --- количество неудачных чисел, лежащих в диапазоне от 1 до $r$. Во второй строке выходного файла через пробел выведите в возрастающем порядке все неудачные числа, лежащие в диапазоне от 1 до $r$.

제한

예제 입력 1

10 5 60

예제 출력 1

7
40 50 52 53 55 58 59

힌트

출처

Olympiad > Russian Olympiad in Informatics > Russia Team High School Programming Contest > Russia Team High School Programming Contest 2014 C번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /