Форум » Выполнение и анализ алгоритмов для исполнителей » Задание 5_284 » Ответить

Задание 5_284

Galina22: 284) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. К этой записи дописываются ещё несколько разрядов по следующему правилу: а) Если N чётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи; 6) Если N нечётное, то к нему справа приписываются два нуля, а слева единица. Например, двоичная запись числа 1101 будет преобразована в 1110100. Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Сколько существует различных чисел N, для которых результат работы данного алгоритма принадлежит отрезку [500; 700]? Здравствуйте! Я решала это задание в Excel, и у меня получился ответ 21. Это числа 500, 508, 513, 516, 522, 524, 530, 539, 540, 546, 555, 563, 572, 578, 587, 595, 611, 636, 642, 651, 692. Наверное решать задачу с помощью программы проще, да и ответ будет правильный. Подскажите, как вы решали эту задачу?

Ответов - 2

Поляков: [pre2] def alg(x): s = f"{x:b}" if x % 2 == 0: s = s + f"{s.count('1'):b}" else: s = '1' + s + '00' return int( s, 2 ) N = 1 count = 0 while N < 1000: if 500 <= alg(N) <= 700: print(N) count += 1 # break N += 1 print( 'Всего: ', count ) [/pre2]

Galina22: спасибо большое



полная версия страницы