Cумма цифр на километровых столбах
Задача: На каждом километре шоссе между селами Петино и Васино стоит столб с табличкой, на одной стороне которой написано, сколько километров до Петино, а на другой – до Васино. Тимофей заметил, что на каждом столбе сумма всех цифр равна N. Найдите расстояние от Петино до Васино.
Алгоритм принимает на вход 1 число - сумму цифр на километровых столбах (N).
На выход алгоритм должен отдавать 1 число - расстояние между Петино и Васино.
num = int(input())
def g(x):
y = []
for i in range(x+1):
n = x - i
y.append(sum([int(j) for j in str(i)]) + sum([int(j) for j in str(n)]))
if min(y) == max(y) and min(y) == num:
return x
return 0
for i in range(2021): # но тут максимально 2021 километр
if g(i): print(i); break
else: g(i)
Как еще можно написать программу чтобы число итераций было больше 2021
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Если чуть-чуть покумекать, то можно заметить, какие именно расстояния могут давать одинаковые суммы цифр, увидеть закономерности, и получить простую функцию:
def dist(x):
return (x % 9 + 1) * (10**(x // 9)) - 1