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

Срочно даю 50 баллов
Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число a0 ни взять, последовательность (часто называемая сиракузской ), вычисляемая от выбранного числа по правилу

an+1=an/2, если an — чётное число
an+1=3an+1, если an — нечётное число
обязательно достигнет единицы. Он решил поэкспериментировать с последовательностью: задать начальную величину, вычислить сколько-то первых членов и посмотреть, какого наибольшего значения они достигнут. Только на калькуляторе, на котором он считал, сломался экран, и было видно только три последних разряда получаемых чисел. Поэтому Петя искал максимум из тех чисел, которые он видел. Напишите программу, которая выведет найденный им максимум.

Ответы

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

Ответ:

#include <iostream>

using namespace std;

int A[104],n,k;

void posl(){

A[0]=n;

for (int i=1;i<k;i++){

if (A[i-1]%2==0){A[i]=A[i-1]/2;}

else{A[i]=3*A[i-1]+1;}

}

}

int max(){

int m=A[0];

for(int i=1;i<k;i++){

if(A[i]%1000>m%1000){m=A[i];}

}

return m;

}

int main() {

int nom,maximum;

cin >>n>>k;

posl();

maximum=max();

cout <<maximum;

for (int i=0;i<k;i++){

if (A[i]==maximum){nom=i;}

}

cout <<" "<<nom;

}

Объяснение:

Вот.

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