Сколько билетов будут выигрышными с номерами от 2 до 50000 включительно?

Программист Олег придумал новое правило для вычисления выигрышных лотерейных билетов. Билет будет считаться выигрышным, если сумма возведенных в квадрат цифр его номера в итоге приводит к 1 после нескольких итераций.

Например, 19 — номер выигрышного билета:

1 во 2 + 9 во 2 = 82

8 во 2 + 2 во 2 = 68

6 во 2 + 8 во 2 = 100

1 во 2 + 0 во 2 + 0 во 2 = 1

Помогите Олегу посчитать, сколько лотерейных билетов будут выигрышными с номерами в диапазоне от 2 до 50000 включительно.

+1
Жалоба

Ответы (1)

Чтобы посчитать количество выигрышных лотерейных билетов, можно составить код программы на языке программирования Python, использованием процедуры tst, возвращающей результат многократных сложений квадратов чисел разрядов параметра (n).

При этом важно избежать зацикливания, например для числа 20 получим:

2² + 0² = 4

4² = 16

1² + 6² = 37

3² + 7² = 58

5² + 8² = 64

6² + 4² = 40

4² + 0² = 4

Далее этот процесс продолжится до бесконечности.

Чтобы избежать зацикливания, вводится переменная hist.

Код программы на языке Python:

def tst(n):

​ ​ ​ ​ hist=[n]

​ ​ ​ ​ while n!=1:

​ ​ ​ ​ ​ ​ ​ ​ n=sum(map(lambda x:int(x)2,str(n)))**

​ ​ ​ ​ ​ ​ ​ ​ hist.append(n)

​ ​ ​ ​ ​ ​ ​ ​ if n in hist[:-1:]:break

​ ​ ​ ​ return n

k=0

for i in range(2,50001):

​ ​ ​ ​ if tst(i)==1:

​ ​ ​ ​ ​ ​ ​ ​ k+=1

print(k)

Результатом выполнения этой программы станет число 7623 — количество выигрышных билетов, для которых операция многократного сложения квадратов разрядов номеров билетов приводит к результату 1.

Ответить
+2
© 2012-2026 myanswer.ru
Все вопросы, размещенные на данном сайте, созданы пользователями или собраны из открытых источников. Связаться