5 задание егэ информатика питон код
'''На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим
образом:
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
б) если число N на 3 не делится, то вычисляется сумма цифр полученной троичной записи, эта сумма
переводится в троичную систему счисления и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R. Укажите минимальное
чётное число R, большее 220, которое может быть получено с помощью описанного алгоритма. В ответе
запишите это число в десятичной системе счисления.
'''
def p(n):
r = ''
while n > 0:
r = str(n % 3) + r
n = n // 3
return r
for n in range(1, 10000):
s = p(n)
if n % 3 == 0:
R = int(s + s[-2:] + s[-1])
else:
Sum = sum(map(int, s))
Sum3 = p(Sum)
R = int(s + Sum3)
if R % 2 == 0 and R > 220:
print(R)
break
закомментированная часть это задача, ниже мое решение. программа выдает 10100, а правильный ответ 222. помогите!
слушай, у меня была такая же проблема с егэ по информатике. я тоже не могла понять, почему код не работает. потом я нашла Умскул , и там реально классные уроки по питону. после занятий я разобралась с задачами и теперь все получается! попробуй, может и тебе поможет!
держи

def to_ternary(n):
r = ''
while n > 0:
r = str(n % 3) + r
n = n // 3
return r
def solve():
for n in range(1, 10000):
s = to_ternary(n)
if n % 3 == 0:
r_ternary = s + s[-2:]
else:
sum_digits = sum(map(int, s))
r_ternary = s + to_ternary(sum_digits)
r_decimal = int(r_ternary, 3)
if r_decimal % 2 == 0 and r_decimal > 220:
print(r_decimal)
break
solve()
def to_ternary(n):
r = ''
while n > 0:
r = str(n % 3) + r
n = n // 3
return r
def to_decimal(ternary_str):
decimal = 0
for i, digit in enumerate(reversed(ternary_str)):
decimal += int(digit) × (3 i)
return decimal
for n in range(1, 10000):
s = to_ternary(n)
if n % 3 == 0:
R_ternary = s + s[-2:] # строка
else:
Sum = sum(map(int, s))
Sum3 = to_ternary(Sum)
R_ternary = s + Sum3 # строка
R = to_decimal(R_ternary) # Переводим из троичной в десятичную
if R % 2 == 0 and R > 220:
print(R)
break