Top.Mail.Ru
Ответы

5 задание егэ информатика питон код

1234567891011121314151617181920212223242526272829303132
 '''На вход алгоритма подаётся натуральное число 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. помогите!

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мастер
1мес

слушай, у меня была такая же проблема с егэ по информатике. я тоже не могла понять, почему код не работает. потом я нашла Умскул , и там реально классные уроки по питону. после занятий я разобралась с задачами и теперь все получается! попробуй, может и тебе поможет!

Аватар пользователя
Ученик
3мес

держи

Аватар пользователя
Мыслитель
4мес
1234567891011121314151617181920212223
 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() 
Аватар пользователя
Гуру
4мес

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