Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

5 задание егэ информатика. помогите исправить программу

Виктория Струкова Ученик (87), на голосовании 1 месяц назад
for n in range(100):
n10 = n
n3 = ''
t = ''
c = 0
while n10 > 10:
n3= str(n10 % 3)
n10 //= 3
n3 = n3[::-1]
if n10 % 3 == 0:
c += n3[-2:]
else:
c += sum(n10)
while c > 0:
t += str(c % 3)
c //= 3
t = t[::-1]
n3 += t
r10 = int(n3, 3)
print(r10)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим
образом:
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются две последние троичные цифры;
б) если число N на 3 не делится, то вычисляется сумма цифр полученной троичной записи, эта сумма
переводится в троичную систему счисления и дописывается в конец числа.
Полученная таким образом запись является троичной записью искомого числа R. Укажите минимальное
чётное число R, большее 220, которое может быть получено с помощью описанного алгоритма. В ответе
запишите это число в десятичной системе счисления.
Голосование за лучший ответ
ВАдим Тагиров Гуру (3084) 2 месяца назад
Тут не 10, а 0
Виктория СтруковаУченик (87) 2 месяца назад
спасибо,но все равно неправильно
ВАдим Тагиров Гуру (3084)
 result_min = 10000 
for n in range(1, 101): #от 1, потому что в задании написано "подается НАТУРАЛЬНОЕ число" 
    n10 = n 
    n3 = "" 
    summa = 0 
    summa3 = "" 
    while n10 > 0: 
        n3 = n3 + str(n10 % 3) 
        n10 //= 3 
    n3 = n3[::-1] 
     
    if n10 % 3 == 0: 
        n3 = n3 + n3[-2:] 
    else: 
        for sym in n3: 
            summa = summa + int(sym) 
        while summa > 0: 
            summa3 = summa3 + str(summa % 3) 
            summa //= 3 
        summa3 = summa3[::-1] 
        n3 = str(n3) + summa3 #строка 
     
    R = int(n3, 3) 
    if R > 220: 
        if R % 2 == 0: 
            result_min = min(result_min, R) # можешь просто вывести все R и посмотреть какой самый маленький 
print(result_min) 
         
Очень плохой код, надеюсь, что-то понятно
Виктория СтруковаУченик (87) 2 месяца назад
да,ответ верный,спасибо большое)))))))
Похожие вопросы