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

ИНФОРМАТИКА 8 КЛАСС. СКОРЕЕ


ИНФОРМАТИКА 8 КЛАСС. СКОРЕЕ

Показать ответ
Ответ:
ник5029
ник5029
01.06.2022 02:26

22

Объяснение:

Понятно, что каждая из команд может только увеличить число.

У нас обязательно есть число 16, из него есть два пути:

1. сделать +1

2. сделать x2

Если мы сделаем +1, то после этого уже точно не сможем сделать x2, т.к. 17 x 2 =  34, а 34 > 33, а уменьшить число мы не сможем. Если мы будем делать постоянно +1, то мы точно пройдём через 30.

Значит не нужно делать +1, когда мы на числе 16, а надо делать x2.

Следовательно, концовка у нас точно будет такая 16 -> 32 -> 33.

Теперь надо посчитать, сколько различных получить 16 из 2. К любому такому мы допишем нашу концовку и получим программу подходящую под наши условия, и к тому же все программы, подходящие под данные условия, выглядят именно так.

Считать сколькими можно получить 16 из 2 будет динамическим программированием.

ans[i] - количество различных программ, которые получают i из 2.

Очевидно, ans[2] = 1 (пустая программа).

ans[3] = 1 (нужно сделать +1)

ans[4] = ans[3] + ans[2] = 2 (можно сделать +1 к 3, а можно x2 к 2)

Далее вычисления всегда следующие:

ans[i] = ans[i - 1] + ans[i / 2] для чётных i (можно либо добавить +1 к числу i - 1, либо сделать x2 для числа i / 2)

ans[i] = ans[i - 1] для нечётных i (можно получить только путём добавления +1 к числу i - 1)

Итак, считаем:

ans[2] = 1

ans[3] = ans[2] = 1

ans[4] = ans[3] + ans[2] = 2

ans[5] = ans[4] = 2

ans[6] = ans[5] + ans[3] = 4

ans[7] = ans[6] = 4

ans[8] = ans[7] + ans[4] = 6

ans[9] = ans[8] = 6

ans[10] = ans[9] + ans[5] = 8

ans[11] = ans[10] = 8

ans[12] = ans[11] + ans[6] = 12

ans[13] = ans[12] = 12

ans[14] = ans[13] + ans[7] = 16

ans[15] = ans[14] = 16

ans[16] = ans[15] + ans[8] = 22

Значит 16 из 2 можно получить И столькими же можно получить 33 из 2 выполняя условия задачи.

0,0(0 оценок)
Ответ:
Viktor0707
Viktor0707
06.08.2022 22:19

Pascal ABC

Код:

var

  a: array [1..100] of real;

  max, i, min, N: integer; temp: real;

begin

    readln(N);

    //заполнение массива и его вывод

    for i := 1 to N do begin

        a[i]:=random()*100;

        write(a[i]:0:2, ' ');

    end;

    writeln;

    //поиск максимума и минимума

    min := 1; max := 1;

    for i := 1 to N do begin

        if a[min] > a[i] then min := i;

        if a[max] < a[i] then max := i;

    end;

    //меняем местами

    temp := a[max];

    a[max] := a[min];

    a[min] := temp;

    //вывод массива

    for i := 1 to N do

        write(a[i]:0:2, ' ');

    writeln;

end.

Тесты:

Ввод:

5

Вывод:

81.57 14.35 20.60 42.20 21.09  

14.35 81.57 20.60 42.20 21.09

Ввод:

6

Вывод:

90.94 46.30 24.40 99.34 12.02 69.05  

90.94 46.30 24.40 12.02 99.34 69.05

Ввод:

4

Вывод:

52.21 61.47 17.57 68.80  

52.21 61.47 68.80 17.57

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота