program delin;
const
nn = 100;// максимальный размер массива
var
i, j, n, t: integer;
a: array[1..nn] of integer;
begin
write('n = ');
read(n);
randomize;
for i := 1 to n do
begin
a[i] := random(38) - 9;
write(a[i], ' ');
end;
writeln;
for i := n - 1 downto 1 do
for j := 1 to i do
if a[j] > a[j + 1] then
begin
t := a[j];
a[j] := a[j + 1];
a[j + 1] := t;
end;
for i := 1 to n do
write(a[i], ' ');
end.
<span> Задача 5. “Кузнечик”
В одной стране жил-был волшебный кузнечик, умеющий прыгать на любое расстояние. А ко-
гда он изучил тему «числовые последовательности», то решил прыгать по дороге с нумерованны-
ми клетками по придуманному им правилу: 1 2 4 7 11 16 22 29 и так далее, дальше продолжи-
те сами. А другой кузнечик решил подкараулить его в какой-нибудь клетке N, чтобы не дать уска-
кать в бесконечность. Помогите ему, предложите алгоритм, проверяющий, попадет ли первый
кузнечик в клетку N?
Решение: Можно догадаться, что каждое n-ное число bn = bn-1 + n – 1, где b1 = 1. Можно также
догадаться, что каждое число нашей прогрессии bn = 1 + 1 + 2 + 3 + … + n – 1 = 1 + Sn , где Sn – это
сумма арифметической прогрессии с a1=0 и d=1. И по формуле прогрессии получаем:
bn = 1 + n(n-1)/2. Остается проверить, равно ли введенное N какому-нибудь bn. Решаем уравнение:
N = 1 + n(n-1)/2, квадратное уравнение: n2 – n + 2 – 2N = 0, D = 1 – 4(2-2N) = 8N – 7,
n = (1+sqrt(8N-7))/2 – берем только положительный ответ. Получился алгоритм: Подставляем N в
формулу для n и если n – целое, то кузнечик попадет в клетку с номером N. Вопрос только, как
проверить, целое ли n. Для этого проверяем, достаточно ли мало отклонение его от его округле-
ния: если abs( n – round( n ) ) < 0,000000000000001, то n – скорее всего целое. По крайней мере с
точностью до 0,000000000000001.</span>
Frac(x) возвращает дробную часть действительного числа x
Например, frac(2017.2018) = 0.2018
1 5- ти л ведро
2 9-ти литровое
3 действие
------------------------------------------------------------------------------------------
№ | 1 | 2 | 3
------------------------------------------------------------------------------------------
1 0 0 начало
2 5 0 налить 5-ти литровое из родника
3 0 5 перелить из 5-ти в 9-ти л
4 5 5 налить в 5-ти из родника
5 1 9 из 5-ти долить 9-ти л
6 1 0 вылить воду из 9-ти л
7 0 1 из 5-ти л перелить в 9-ти
8 5 1 наполнить 5-ти л из родника
9 0 6 из 5-ти л перелить в 9-ти
10 5 6 наполнить 5-ти л из родника
11 2 9 из 5-тил долить 9-ти л
12 2 0 вылить из 9-ти л
13 0 2 из 5-ти л перелить в 9-ти л
14 5 2 налить из родника в 5-ти л
15 0 7 вылить из 5-ти л в 9-ти л
16 5 7 набрать из родника в 5-ти л
17 3 9 долить 9-ти л из 5-тил и
в 5-ти л останутся заветные 3 литра
18 3 0 выливаем из 9-ти л
19 КОНЕЦ