Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Pascal abc.net:
- //1. Находится сумма разрядов числа N.
- //2. Полученное число переводится в двоичную систему счисления.
- //3. К записи, полученной на предыдущем этапе, дописываются разряды по
- //следующему правилу:
- //a. Если количество единиц четное дописывается единица слева и два
- //нуля справа,
- //b. Если количество единиц нечетное дописывается 10 слева и 1 справа.
- //4. Результат переводится в десятичную систему и выводится на экран
- //Сколько существует чисел N таких, что в результате работы автомата будет
- //выведено число 21?
- ### uses school;
- var a:=(('0'*9).ToI.Digits.Sum..('9'*9).ToI.Digits.Sum).Where(x->
- ((bin(x).cnt('1').d(2)) ?
- dec('1'+bin(x)+'00',2)=21:
- dec('10'+bin(x)+'1',2)=21));
- a.Pr;
- -------------------------------------------------------------------------------------------------------------
- Python:
- #Строится двоичная запись числа N.
- #К этой записи дописываются справа ещё два разряда по следующему правилу:
- #складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 #преобразуется в запись 111001;
- #над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.
- #Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа # R. R > 43
- def function(n):
- binary = bin(n)[2:]
- for _ in range(2):
- binary += str(binary.count('1') % 2)
- return int(binary, 2)
- for i in range(1,45):
- if function(i) > 43:
- print(function(i))
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement