503.py
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
Строится троичная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то слева к нему приписывается «1»,
а справа дописывается «02»;
б) если число N на 3 не делится, то остаток от деления на 3 умножается на 4,
переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число N, после обработки которого
с помощью этого алгоритма получается число R, меньшее 100.
"""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
Строится троичная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то слева к нему приписывается «1»,
а справа дописывается «02»;
б) если число N на 3 не делится, то остаток от деления на 3 умножается на 4,
переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число N, после обработки которого
с помощью этого алгоритма получается число R, меньшее 100.
"""
def to_3(N):
n3 = "" # пустая строка для троичной записи числа N
while N > 0: # переводим число n в троичную систему
n3 += str(N % 3) # добавляем остаток от деления в троичную запись
N //= 3 # делим число N на 3
return n3[::-1] # переворачиваем строку для получения правильной троичной записи
for N in range(1000, 0, -1):
if N % 3 == 0: # если число N делится на 3
s = "1" + to_3(N) + "02" # слева к нему приписывается «1», а справа дописывается «02»
else: # если число N не делится на 3
s = to_3(N) + to_3((N % 3) * 4) # остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец числа
R = int(s, 3) # переводим троичную запись в десятичную систему
if R < 100: # если число R меньше 100
print(N) # выводим число N
break # выходим из цикла
"""
Ответ: 10
""""""
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
Строится троичная запись числа N.
Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то слева к нему приписывается «1»,
а справа дописывается «02»;
б) если число N на 3 не делится, то остаток от деления на 3 умножается на 4,
переводится в троичную запись и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число N, после обработки которого
с помощью этого алгоритма получается число R, меньшее 100.
"""
def to_3(N):
n3 = "" # пустая строка для троичной записи числа N
while N > 0: # переводим число n в троичную систему
n3 += str(N % 3) # добавляем остаток от деления в троичную запись
N //= 3 # делим число N на 3
return n3[::-1] # переворачиваем строку для получения правильной троичной записи
for N in range(1000, 0, -1):
if N % 3 == 0: # если число N делится на 3
s = "1" + to_3(N) + "02" # слева к нему приписывается «1», а справа дописывается «02»
else: # если число N не делится на 3
s = to_3(N) + to_3((N % 3) * 4) # остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец числа
R = int(s, 3) # переводим троичную запись в десятичную систему
if R < 100: # если число R меньше 100
print(N) # выводим число N
break # выходим из цикла
"""
Ответ: 10
"""