Суть нужного алгоритма в следующем: Заводим массив из 21 члена. Первый член будет соответствовать первой ступени. Приравняем его значение к единицы. Таким образом для каждой ступени будем считать количество вариантов на неё попадания. Для каждой ступени это будет суммой предыдущих двух членов. То есть a[0]=1, тогда: a[1]=1 //на первую ступень можно попасть одним a[2]=1+1=2 //на вторую ступень двумя - с нулевой и с первой a[3]=2+1=3 //на третью ступень можно попасть либо с первой, либо со второй, на которую в свою очередь можно попасть двумя a[4]=3+2=5 a[5]=5+3=8 и так далее
Заметим, что это последовательность Фибоначчи. Тогда решением будет 21-й член этой прогрессии. Можно посчитать вручную, либо через программу. ответ 10 946.
Program fofgogjoj; var arr: array[1..1000] of byte; max_num, min_num: byte; i: byte; n,p:integer; begin randomize; Wriiteln('Введите число n'); Readln(n); for i := 1 to n do begin arr[i] := random(100); Write (arr[i]:3); end; max_num := arr[1]; for i := 2 to n do if arr[i] > max_num then begin max_num := arr[i]; end; Writeln; Writeln ('Max = ',max_num); min_num := arr[1]; for i := 2 to n do if arr[i] < min_num then begin min_num := arr[i]; end; Writeln; Writeln ('Min = ',min_num); P:=max_num*min_num; Writeln('Произведение равно:',p); end.
Заводим массив из 21 члена. Первый член будет соответствовать первой ступени. Приравняем его значение к единицы. Таким образом для каждой ступени будем считать количество вариантов на неё попадания. Для каждой ступени это будет суммой предыдущих двух членов.
То есть a[0]=1, тогда:
a[1]=1 //на первую ступень можно попасть одним
a[2]=1+1=2 //на вторую ступень двумя - с нулевой и с первой
a[3]=2+1=3 //на третью ступень можно попасть либо с первой, либо со второй, на которую в свою очередь можно попасть двумя
a[4]=3+2=5
a[5]=5+3=8
и так далее
Заметим, что это последовательность Фибоначчи. Тогда решением будет 21-й член этой прогрессии. Можно посчитать вручную, либо через программу. ответ 10 946.
var
arr: array[1..1000] of byte;
max_num, min_num: byte;
i: byte;
n,p:integer;
begin
randomize;
Wriiteln('Введите число n');
Readln(n);
for i := 1 to n do begin
arr[i] := random(100);
Write (arr[i]:3);
end;
max_num := arr[1];
for i := 2 to n do
if arr[i] > max_num then
begin
max_num := arr[i];
end;
Writeln;
Writeln ('Max = ',max_num);
min_num := arr[1];
for i := 2 to n do
if arr[i] < min_num then
begin
min_num := arr[i];
end;
Writeln;
Writeln ('Min = ',min_num);
P:=max_num*min_num;
Writeln('Произведение равно:',p);
end.