Олимпиадная задача по программированию на python

1,4K прочитали

Задача №1

Условие: Запись числа N в некоторой позиционной системе счисления выглядит следующим образом: 555х. Известно, что если поделить это число на сумму его цифр, взятых из записи числа в системе счисления с основанием Х, то результат будет равен 61.
Определите основание системы счисления Х. В ответе укажите это число.

Решение будем делать на python.

Пусть x2 = 555 - это изначальное число, а сумма цифр это summ = 0

Нам нужен цикл - пока не кончится число x2, while x2 > 0:

будем прибавлять остаток от деления на 10, summ += x2 % 10

и запомним целое от деления на 10, x2 //= 10

Для поиска системы счисления осуществляем перебор, используя цикл, for x in range(6, 64):

Условной конструкцией проверяем, что если в x системе счисления поделить на сумму цифр равную 61, if int("555", x) / summ == 61:

ВЕРНО (True), то выводим основание, print(x)

и выходим из цикла, break

x2 = 555 # изначальное число
summ = 0 # сумма цифр
while x2 > 0: # пока не кончится число
summ += x2 % 10 # прибавляем остаток от деления на 10
x2 //= 10 # запоминаем целое от деления на 10

for x in range(6, 64): # ищем систему счисления перебором
if int("555", x) / summ == 61: # если в x системе счисления поделить на сумму цифр равную 61
print(x) # значит выводим основание
break # выходим из перебора

Ответ: 13

Задача №1 Условие: Запись числа N в некоторой позиционной системе счисления выглядит следующим образом: 555х.