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

СРОЧНО ЯЗЫК С++ ОСТАЛСЯ ЧАС ДАЮ 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

Ответы

Автор ответа: Ketrin232135
0

Ответ: Для каждого элемента последовательности будем вычислять его остаток от деления на 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.


melikhovyaroslav: попросили же с++,какой нафиг питон
Похожие вопросы
Предмет: Алгебра, автор: amira1elghazaly