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

Задание №4222

Giruc: Как оформить эту задачу на питоне? На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится шестнадцатеричная запись числа N // 2, где "//" - операция деления нацело. 2) К этой записи дописывается ещё три разряда по следующему правилу: если N не делится на 4, то слева к нему приписывается "F", а справа - "A0". В противном случае слева приписывается "15", а справа "C". Например, N = 410 => 216 => 152C16 = 542010 = R. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является шестнадцатеричной записью искомого числа R. Укажите наибольшее число N, для которого результат работы алгоритма меньше 65536. В ответ запишите это число в десятичной системе счисления.

Ответов - 3

polyakovss: Вариант решения: [pre2] N = 1 while True: n1 = f'{N//2:X}' if N % 4 != 0: n1 = 'F' + n1 + 'A0' else: n1 = '15' + n1 + 'C' if int(n1,16) < 65536: N += 1 else: break print(N-1)[/pre2]

Giruc: Что делает третья строка? Почему в начале N = 1, а не 0?

polyakovss: Что делает третья строка?Строит строковое представление шестнадцатеричной записи числа N // 2, где "//" - операция деления нацело. (см.,например, N = 28 print(f'{N//2:X}') ) То же самое можно написать так: n1 = '{:X}'.format(N//2) Почему в начале N = 1, а не 0? По условию задачи на вход алгоритма подаётся натуральное число N.




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