Предмет: Информатика, автор: XxJoTaRoxX

Задание срочно на питоне пожалуйста!!!!!Итерационный процесс

Итерационный процесс задается следующими формулами

an+1=an/2

, если an
— чётное число
an+1=3an+1
, если an

— нечётное число

Для заданой начальной величины вам необходимо вычислить заданное количество первых членов и посмотреть, какого наибольшего значения достигнут три последних разряда получаемых чисел. Напишите программу, которая выведет найденный максимум.
Формат входных данных

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

).

Для считывания данных из одной строки в языке Python можно использовать конструкцию:

a, k = map(int, input().split())

Гарантируется, что все получаемые члены последовательности не превосходят 109

.
Формат выходных данных

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

этого члена. Если таких членов несколько, выведите тот, который имеет больший индекс.
Ввод
Вывод

1996 400

998 1

Ответы

Автор ответа: nitroamogus227
1

Ответ:

def sequence_max(a0, k):

   seq = [a0]  # список для сохранения членов последовательности

   for i in range(k):

       if seq[i] % 2 == 0:

           seq.append(seq[i] // 2)

       else:

           seq.append(3 * seq[i] + 1)

   max_val = seq[0]  # начальное значение максимума

   max_idx = 0  # начальный индекс максимума

   for i, val in enumerate(seq):

       # выбираем максимальное значение по трем последним цифрам

       if val % 1000 > max_val % 1000:

           max_val = val

           max_idx = i

   return max_val, max_idx

a0, k = map(int, input().split())

result = sequence_max(a0, k)

print(result[0], result[1])


ilyav1nokurov: есть способ покороче a, k = map(int, input().split())

max_last_digits = -1
max_index = -1

for i in range(k+1):
last_digits = a % 1000
if last_digits > max_last_digits:
max_last_digits = last_digits
max_index = i
if a % 2 == 0:
a //= 2
else:
a = 3*a + 1

print(max_last_digits, max_index)
XxJoTaRoxX: ща еще задачек накину
Автор ответа: ilyav1nokurov
1

a, k = map(int, input().split())

max_last_digits = -1

max_index = -1

for i in range(k+1):

   last_digits = a % 1000

   if last_digits > max_last_digits:

       max_last_digits = last_digits

       max_index = i

   if a % 2 == 0:

       a //= 2

   else:

       a = 3*a + 1

print(max_last_digits, max_index)

Похожие вопросы
Предмет: Математика, автор: loveyou05112019
Предмет: Математика, автор: lucenkomilana885
Предмет: Русский язык, автор: pzubareva07