Задание 14
Задание 14 (демо-2023). Операнды арифметического выражения записаны в системе счисления с основанием 15.
123x515 + 1x23315
В записи чисел переменной x обозначена неизвестная цифра из алфавита 15-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления.
Решение задания на языках PascalABC.NET и Python приведено ниже.
PascalABC.NET |
Python |
## foreach var x in range(0,15) do begin var a:BigInteger:=15; var n:=a**4+2*a**3+3*a**2+x*a+5 +a**4+x*a**3 +2*a**2+3*a+3; if n mod 14=0 then print( n div 14 ); end; |
for x in range(0,15): n = 15**4+ 2*15**3+ 3*15**2+\ x*15+ 5+ 15**4+ x*15**3+\ 2*15**2+ 3*15+3 if n % 14==0: print( n//14 ) |
Для решения этого задания воспользуемся развёрнутой записью чисел. Первое число 123x515 представим в виде 1*15^4+2*15^3+3*15^2+x*15+5, второе число 1x23315 соответственно представим как 1*15^4+x*15^3+2*15^2+3*15+3.
Реализация этой записи на PascalABC.NET и Python также практически
аналогична, за исключением того, что в PascalABC.NET нужно использовать
тип BigInteger, потому что функции возведения в степень ** и Power(a,b) возвращают всегда вещественное число, даже
если основание и показатель степени – целые числа.
Однако это ограничение можно
обойти, если использовать новый тип данных BigInteger. Тогда функция
будет возвращать результат с типом BigInteger, который уже можно
использовать для работы с целочисленными функциями.
Если полученное число делится на 14 (n mod 14=0, n%14==0), то выводим результат от деления на 14 (n div 14, n//14).