Понятно, что каждая из команд может только увеличить число.
У нас обязательно есть число 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 выполняя условия задачи.
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 выполняя условия задачи.
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