Электричка «Калининград – Светлогорск» следует в направлении Зеленоградска, нумерация электрички начинается «с хвоста». При следовании в Калининград нумерация начинается «с головы». Мальчик сел в вагон Р по порядку от головы поезда и увидел, что его вагон имеет номер N. Мальчик решил определить, сколько всего вагонов в электричке? Напишите программу, которая ему это сделать или вывести сообщение, что это сделать невозможно. Результат программы как в примере (значение красным цветом вводятся с клавиатуры). Сколько вагонов в поезде? Мальчик сел в вагон от головы поезда - 4 и обнаружил, что его вагон имеет номер - 11 Вагонов в поезде всего - 14 Сколько вагонов в поезде? Мальчик сел в вагон от головы поезда - 8 и обнаружил, что его вагон имеет номер - 8 Невозможно определить.
Заводим массив из 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.