СРОЧНО ЯЗЫК С++ ОСТАЛСЯ ЧАС ДАЮ 60 БАЛЛОВ
Итерационный процесс
Итерационный процесс задается следующими формулами
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
Ответы
Ответ: Для каждого элемента последовательности будем вычислять его остаток от деления на 1000 (последние три разряда) и находить максимальное значение. Если несколько элементов имеют одинаковые максимальные последние три разряда, то будем хранить индекс последнего из них.
Для вычисления следующего элемента последовательности будем использовать условия задачи и выводить ответ, когда достигнуто заданное количество элементов.
Программа на языке Python:
a, k = map(int, input().split())
max_last_three_digits = 0
max_last_three_digits_index = 0
for i in range(k+1):
if i > 0:
if a % 2 == 0:
a = a // 2
else:
a = 3*a + 1
last_three_digits = a % 1000
if last_three_digits >= max_last_three_digits:
max_last_three_digits = last_three_digits
max_last_three_digits_index = i
print(max_last_three_digits, max_last_three_digits_index)
Пример использования:
Входные данные:
1996 400
Выходные данные:
998 1
В этом примере последняя цифра максимальна у чисел 998 и 1558, но по условию задачи необходимо вывести тот элемент, у которого больше индекс. Индекс 998 равен 1, а индекс 1558 равен 331. Поэтому выводим число 998 и его индекс 1.