• Предмет: Информатика
  • Автор: ProfesorGogs
  • Вопрос задан 2 года назад

Питон
Максимум на сломанном калькуляторе
Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число a0 ни взять, последовательность (часто называемая сиракузской ), вычисляемая от выбранного числа по правилу

an+1=an/2, если an — чётное число
an+1=3an+1, если an — нечётное число
обязательно достигнет единицы. Он решил поэкспериментировать с последовательностью: задать начальную величину, вычислить сколько-то первых членов и посмотреть, какого наибольшего значения они достигнут. Только на калькуляторе, на котором он считал, сломался экран, и было видно только три последних разряда получаемых чисел. Поэтому Петя искал максимум из тех чисел, которые он видел. Напишите программу, которая выведет найденный им максимум.

Входные данные

В единственной строке через пробел заданы два целых числа: a0 — начальный член последовательности и k — количество членов, которые вычисляет Петя, то есть индекс последнего вычисленного члена (1≤a0≤107, 0≤k≤104). Гарантируется, что все получаемые члены последовательности не превосходят 109.

Выходные данные

Выведите через пробел два целых числа — член последовательности ai, 0≤i≤k, для которого три последние цифры дают максимальное число, и индекс i этого члена. Если таких членов несколько, выведите тот, который имеет больший индекс.

Примеры
Ввод
Вывод
2518 5
1889 3

Ответы

Ответ дал: fedderr
1

Ответ:

n, k = list(map(int, input().split()))

mas = [n]

kalk = []

for i in range(k):

   if n % 2 == 0:

       n = n//2

       mas.append(n)

   else:

       n = (n * 3) + 1

       mas.append(n)

for el in range(len(mas)):

   if mas[el] >= 1000:

       kalk.append(int(str(mas[el])[1 : ]))

   else:

       kalk.append(int(mas[el]))

num = 0

huge = 0

for j in range(len(kalk)):

   if kalk[j] > huge:

       huge = kalk[j]

       num = j

print(mas[num], num)

Объяснение:


ProfesorGogs: В ты из сириуса ?
ProfesorGogs: там выдаёт не правильно
Вас заинтересует