Advertisement
C3EQUALZ

Задание 5 ЕГЭ

May 10th, 2022 (edited)
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.35 KB | None | 0 0
  1. Pascal abc.net:
  2. //1. Находится сумма разрядов числа N.
  3. //2. Полученное число переводится в двоичную систему счисления.
  4. //3. К записи, полученной на предыдущем этапе, дописываются разряды по
  5. //следующему правилу:
  6. //a. Если количество единиц четное дописывается единица слева и два
  7. //нуля справа,
  8. //b. Если количество единиц нечетное дописывается 10 слева и 1 справа.
  9. //4. Результат переводится в десятичную систему и выводится на экран
  10. //Сколько существует чисел N таких, что в результате работы автомата будет
  11. //выведено число 21?
  12. ### uses school;
  13. var a:=(('0'*9).ToI.Digits.Sum..('9'*9).ToI.Digits.Sum).Where(x->
  14. ((bin(x).cnt('1').d(2)) ?
  15. dec('1'+bin(x)+'00',2)=21:
  16. dec('10'+bin(x)+'1',2)=21));
  17. a.Pr;
  18. -------------------------------------------------------------------------------------------------------------
  19. Python:
  20. #Строится двоичная запись числа N.
  21. #К этой записи дописываются справа ещё два разряда по следующему правилу:
  22. #складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 #преобразуется в запись 111001;
  23. #над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.
  24. #Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа # R. R > 43
  25. def function(n):
  26.     binary = bin(n)[2:]
  27.     for _ in range(2):
  28.         binary += str(binary.count('1') % 2)
  29.     return int(binary, 2)
  30. for i in range(1,45):
  31.     if function(i) > 43:
  32.         print(function(i))
  33.         break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement