В данный код, вставить 2 оператора FloodFill и SetFillStyle, благодаря которым можно закрасить части графика: >0 в коричневый, <0 синий. Программ Lazarus
Итак, мы знаем что переходить мост нужно двум гномам одновременно, 1 остаётся, второй возвращает фонарь назад и переводит следующего. В принципе для решения задачи нам большего не нужно.
Возьмём самого медленного и самого быстрого гнома, итого они перейдут на другую сторону за 4 минуты. После чего быстрый должен будет вернуть фонарь назад потратив ещё 1 минуту.
Итого: мы перевели 1 гнома и потратили 5 минут.
Далее переводим ещё одного самого медленного гнома с самым быстрым, тратя ещё 5 минут.
И опять самого медленного с самым быстрым, ещё 5 минут.
Дальше уже идут довольно быстрые гномы переход на ту сторону займёт 2 минуты, а обратно 1 минуту.
Итого ещё +3 минуты.
Последний переход займёт 2 минуты так как нам не прийдется нести фонарик обратно.
Возьмём самого медленного и самого быстрого гнома, итого они перейдут на другую сторону за 4 минуты. После чего быстрый должен будет вернуть фонарь назад потратив ещё 1 минуту.
Итого: мы перевели 1 гнома и потратили 5 минут.
Далее переводим ещё одного самого медленного гнома с самым быстрым, тратя ещё 5 минут.
И опять самого медленного с самым быстрым, ещё 5 минут.
Дальше уже идут довольно быстрые гномы переход на ту сторону займёт 2 минуты, а обратно 1 минуту.
Итого ещё +3 минуты.
Последний переход займёт 2 минуты так как нам не прийдется нести фонарик обратно.
Всего: 20 минут
function fibonacchi(x:integer):integer;
// функция возвращает порядковый номер введённого числа
// ряда Фибоначчи. Если число не является элементом
// из данного ряда, то функция возвращает -1
var counter:integer = 2;
s1,s2,s3:integer;
begin
s1 := 0;
s2 := 1;
s3 := 0;
if x = 0 then fibonacchi:=1
else if x = 1 then fibonacchi:=2
else begin
while s3 < x do begin
s3 := s1 + s2;
s1 := s2;
s2 := s3;
inc(counter);
end;
if s3 = x then fibonacchi:=counter
else fibonacchi:=-1;
end;
end;
begin
write(fibonacchi(13));
end.