Задание срочно на питоне пожалуйста!!!!!Итерационный процесс
Итерационный процесс задается следующими формулами
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
Answers & Comments
Ответ:
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])
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)
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)