Не понимаю проблему в коде
Решаю 5ое задание ЕГЭ ИКТ. Начал писать код, но столкнулся с проблемой. Без одной строки код отказывается работать вовсе. Ошибку я обнаружил, но не могу понять почему это работает именно так. Вот само задание:
(А. Сардарян) На вход алгоритма подаётся два натуральных числа М и N. Алгоритм ‘строит по ним новое число R следующим образом.
Вычисляется произведение Р1 всех ненулевых чётных цифр чисел М и N.
Вычисляется произведение Р2. всех нечётных цифр чисел М и N.
Результат R вычисляется как модуль разности Р1 и Р2. Например, для N = 256 и M = 108 получаем Р1 = 2* 6* 8 = 96 и, P2 = 5*1 = 5, так что R = |96 - 5|= 91. Укажите минимальное число М, при котором для N = 120 получается R = 29.
Мой код
def f(a):
t=1
for x in a:
t*=x
return t
p1 = 1
p2 = 1
for m in range(1,1111):
s = map(int,list(str(m)))
s1 = [int(x) for x in s if x%2==0 and x!=0]
s = map(int,list(str(m))) #1
s2 = [int(x) for x in s if x%2!=0]
p1 = f(s1)*2
p2 = f(s2)
r=abs(p1-p2)
if r==29:
print(m)
Если убрать строку #1, то код не работает. В чем проблема?
Ответы (1 шт):
Приведенный Вами код не будет работать, что с этой строкой, что без нее. Преобразование должно выглядеть как-то так
s = list(map(int,str(m)))
, а не как у Вас сейчас.