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

Решить задачу на python(без сложных методов, используя for, while, def)

Александр Терехов Ученик (81), на голосовании 4 недели назад
Операнды арифметического выражения записаны в системе счисления с основанием 17:

5432x67(в СС с основанием 17) + 302x(в СС с основанием 17)

В записи чисел переменной x обозначена неизвестная цифра из алфавита 17-ричной системы счисления.

Определите наибольшее значение x, при котором значение этого арифметического выражения кратно 19. Для найденного x укажите значение выражения в ответе в десятичной СС.
Голосование за лучший ответ
Артём Штукарёв Знаток (332) 1 месяц назад
 def to_decimal(num, base):
decimal = 0
for i, digit in enumerate(reversed(num)):
if digit.isdigit():
decimal += int(digit) * (base ** i)
else:
decimal += (ord(digit) - 55) * (base ** i)
return decimal

def check_divisibility(x):
num1 = "5432" + x + "67"
num2 = "302" + x
return (to_decimal(num1, 17) + to_decimal(num2, 17)) % 19 == 0

for x in reversed(range(17)):
if x < 10:
x = str(x)
else:
x = chr(x + 55)
if check_divisibility(x):
print(f"The maximum value of x is {x}")
print(f"The value of the expression in decimal is {to_decimal('5432' + x + '67', 17) + to_decimal('302' + x, 17)}")
break
Похожие вопросы