Срочно С++
Итерационный процесс
Итерационный процесс задается следующими формулами
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
Ответы
Відповідь:
решение задачи на языке C++:
#include <iostream>
using namespace std;
int main() {
int a, k;
cin >> a >> k;
int max_num = a % 1000;
int max_idx = 0;
for (int i = 0; i <= k; i++) {
if (a % 1000 > max_num) {
max_num = a % 1000;
max_idx = i;
}
if (a % 2 == 0) {
a = a / 2;
} else {
a = 3 * a + 1;
}
}
cout << max_num << " " << max_idx << endl;
return 0;
}
Сначала мы считываем начальное значение 'a' и количество членов последовательности, которые надо вычислить 'k'. Затем мы перебираем все члены последовательности от 'a0' до 'ak' и находим максимальное значение последних трех цифр среди всех полученных значений. Когда мы находим такое значение, мы запоминаем его и соответствующий индекс члена последовательности. В конце мы выводим найденный максимум и соответствующий индекс.