Вопрос задан 25.07.2026 в 14:42. Предмет Информатика. Спрашивает Гулян Инесса.

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

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

Перейти к ответам

Ответы на вопрос

Отвечает Марчик Егор.

#include <iostream>
using namespace std;

int main() {
long long a0, k;
cin >> a0 >> k;
long long a = a0;
long long max_val = a;
int max_mod = a % 1000;
int max_idx = 0;
for (int i = 1; i <= k; ++i) {
if (a % 2 == 0) {
a /= 2;
} else {
a = 3 * a + 1;
}
int mod = a % 1000;
if (mod >= max_mod) {
max_mod = mod;
max_val = a;
max_idx = i;
}
}
cout << max_val << " " << max_idx << endl;
return 0;
}

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос