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

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

Ответ:
#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;
}
Объяснение:
Вот.



Конечно, вот Python программа для нахождения максимума из чисел, которые Петя видел в последовательности Коллатца:
pythondef collatz_sequence(n):
sequence = [n]
while n != 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
sequence.append(n)
return sequence
def main():
start_number = int(input("Введите начальное число (a0): "))
num_terms = int(input("Введите количество первых членов последовательности: "))
max_seen = 0
for a0 in range(start_number, start_number - num_terms, -1):
sequence = collatz_sequence(a0)
max_term = max(sequence[-3:]) # Получаем три последних члена и находим максимум
max_seen = max(max_seen, max_term)
print("Наибольшее значение, которое он видел:", max_seen)
if __name__ == "__main":
main()
Эта программа запрашивает начальное число a0
и количество первых членов последовательности, которые Петя хочет исследовать. Затем она вычисляет последовательность Коллатца для каждого числа, начиная с a0
и идя вниз до a0 - num_terms + 1
, находит максимум из трех последних членов для каждой последовательности и выводит наибольшее значение, которое Петя видел.


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili