Автор | Сообщение |
|
Отправлено: 17.10.21 21:15. Заголовок: Задание №4222
Как оформить эту задачу на питоне? На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится шестнадцатеричная запись числа N // 2, где "//" - операция деления нацело. 2) К этой записи дописывается ещё три разряда по следующему правилу: если N не делится на 4, то слева к нему приписывается "F", а справа - "A0". В противном случае слева приписывается "15", а справа "C". Например, N = 410 => 216 => 152C16 = 542010 = R. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является шестнадцатеричной записью искомого числа R. Укажите наибольшее число N, для которого результат работы алгоритма меньше 65536. В ответ запишите это число в десятичной системе счисления.
|
|
|
Ответов - 3
[только новые]
|
|
|
Отправлено: 17.10.21 23:20. Заголовок: Вариант решения
Вариант решения: цитата: | 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) |
|
|
|
|
|
Отправлено: 20.10.21 12:05. Заголовок: Вопрос
Что делает третья строка? Почему в начале N = 1, а не 0?
|
|
|
|
Отправлено: 20.10.21 17:16. Заголовок: Ответ
цитата: | Что делает третья строка? |
|
Строит строковое представление шестнадцатеричной записи числа N // 2, где "//" - операция деления нацело. (см.,например, N = 28 print(f'{N//2:X}') ) То же самое можно написать так: n1 = '{:X}'.format(N//2) цитата: | Почему в начале N = 1, а не 0? |
|
По условию задачи на вход алгоритма подаётся натуральное число N.
|
|
|
|