Доброго времени суток. Решали с товарищем задачу 367
(А. Богданов) Операнды арифметического выражения записаны в системе счисления с некоторым частично заданным основанием
15123x5 + 151x233
В записи чисел переменной x обозначена неизвестная цифра. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.
Пришли к следующему коду:
alf = "12345678910"
for x in alf:
num1 = int('123' + x + '5')
num2 = int('1' + x + '233')
if (int(num1) + int(num2)) % 14==0:
print(( int(num1) +int(num2)) // 14)
Вывод:
PS G:\ICT\Hometask\14\367> python .\main.py
1682
2187
1682
Правильного ответа (1827) здесь нет. Обратились к решению, там указан следующий код:
for x in range(10):
a = 1 * int(f'123{x}5') + 5
b = 1 * int(f'1{x}233') + 5
if (a+b) % 14 == 0:
r = (a+b) // 14
Почему конкретно в данном случае мы добавляем к полученному числу 5? Наш код выдаёт верный ответ если добавить 5 к полученным числам, но зачем это нужно и откуда это число вообще берётся?
Решение на ютубе не помогло, автор скопировал код А. Богданова, и изменил пару переменных для различия, при этом не дав адекватного объяснения
Украденный код Ивана Баженова(поиграем в найди отличия):
for x in range(0, 10):
num1 = int(f"123{x}5") + 5
num2 = int(f"1{x}233") + 5
if (num1 + num2) % 14 == 0:
print((num1 + num2) // 14)