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

Сдать решение задачи C1-Гипотеза Коллатца Задача C1: Гипотеза Коллатца
Недавно Ваня наткнулся на интересную гипотезу, являющуюся одной из нерешенных проблем математики. Она известна под названием «гипотеза Коллатца» и заключается в следующем:

«Выберем любое натуральное число x. Если оно чётное, то поделим его на 2 (получим x / 2), а если нечётное, то умножим на 3 и прибавим 1 (получим 3x + 1). Над новым полученным числом (x / 2 или 3x + 1) выполним те же самые действия. Продолжив выполнять данные действия, рано или поздно мы получим 1, вне зависимости от изначального числа x ».

Ваня решил проверить данную гипотезу и попытаться найти контрпример для нее. Он перебрал много разных чисел, но каждый раз у него в итоге получалась 1. В какой-то момент Ваня устал и пошёл отдыхать, решив продолжить попытки опровержения гипотезы после небольшого перерыва. Но когда он снова вернулся к своим вычислениям, он обнаружил, что его младший брат пролил на бумаги с записями сок, и некоторые числа превратились в пятна. Ваня никогда не сдаётся, поэтому он решил попробовать восстановить числа, с которых начинал свои вычисления.

Ваня видит числа, с которых вычисления продолжаются, и по размеру пятна умеет вычислять, сколько именно чисел было пропущено в вычислениях. Причем он решил восстанавливать записи, исходя из предположения, что изначальное число было минимальным.

Зная количество размытых чисел N и число K, с которого продолжаются вычисления, определите минимальное число, с которого Ваня мог начинать свои вычисления.

Примечания
Пусть, например, листок с одним из вычислений выглядит как на изображении ниже.

В таком случае Ваня определит по пятну, что пропущенных чисел N = 2, и увидит, что вычисления продолжаются с числа K = 5. Так как N = 2, он мог получить K = 5 одним из двух :

20 > 10 > 5 дважды разделив на 2
3 > 10 > 5 сначала умножив на 3 и прибавив 1, а потом разделив на 2
Минимальное начальное число — 3.

Тест №1(задача C.1): N = 2, K = 7;
Тест №2(задача C.2): N = 2, K = 32;
Тест №3(задача C.3): N = 2, K = 112;
Тест №4(задача C.4): N = 3, K = 11;
Тест №5(задача C.5): N = 3, K = 47;
Тест №6(задача C.6): N = 3, K = 512;
Тест №7(задача C.7): N = 4, K = 26;
Тест №8(задача C.8): N = 4, K = 215;
Тест №9(задача C.9): N = 5, K = 100;
Тест №10(задача C.10): N = 5, K = 1000.

Показать ответ
Ответ:
Айринчик
Айринчик
22.12.2021 06:00
1. Вот так сейчас решают подобные задачи:

// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
begin
  Writeln(Range(1,100).Select(i->sin(i)*cos(i)).Where(x->x<>0).Average)
end.

Тестовое решение:
-0.00136006072493969

2. А вот так учат писать это же школьные учителя:

// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
var
  m:array[1..100] of real;
  i,k:integer;
  s:real;

begin
  s:=0;
  k:=0;
  for i:=1 to 100 do begin
    m[i]:=sin(i)*cos(i);
    if m[i]<>0 then begin
      s:=s+m[i];
      k:=k+1
      end
    end;
  Writeln(s/k)
end.

Тестовое решение:
-0.00136006072493969
0,0(0 оценок)
Ответ:
fgydsgfgysa
fgydsgfgysa
24.09.2022 20:25
Как ч понял сортировка по неубыванию это сортировка по возрастанию. То есть легкие элементы всплывают наверх, а тяжелые перемещаются вниз:

//Pascal
const m = 1000
var
    arr: array[1..m] of integer;
    n,i, j, k: integer;
begin
    readln(n);
    write ('Исходный массив: ');
    for i := 1 to n do begin
        readln(arr[i]);
    end;
//сортировка методом пузырька   
    for i := 1 to n-1 do
        for j := 1 to n-i do
            if arr[j] > arr[j+1] then begin
                k := arr[j];
                arr[j] := arr[j+1];
                arr[j+1] := k
            end;
 
    write ('Отсортированный массив: ');
    for i := 1 to n do
        write (arr[i]:4);
end.

Алгоритм сортировки на классическом языке программирования С

# define SWAP(A,B) {A=A^B;B=A^B;A=A^B;}
void bubblesort(int A[], int n)
 {
     int i, j;
     for(i = n-1 ; i > 0 ; i--)
          { for(j = 0 ; j < i ; j++)
               {
                   if( A[j] > A[j+1] ) SWAP(A[j],A[j+1]);
               }
           }
   }
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота