Предмет: Информатика, автор: 697952

числа фибоначчи это числовая последовательность в которой первые 2 числа единицы, а каждое последующее равно сумме двух предыдущих. дано натуральное число n . найти два ближайших к нему числа фибоначчи. одно из них меньше n другое больше n. вывести их в порядке возрастания

Ответы

Автор ответа: Gleb1Kosyrev
0
//PascalABC.NET 3.2 сборка 1318

Var
  n,i,FibPre,FibPost,Fib1,Fib2:integer;
begin
readln(n);
Fib1:=1;
Fib2:=1;
while (n>=Fib1) and (n>=Fib2) do
begin
  if Fib1<n then FibPre:=Fib1;
  if Fib2<n then FibPre:=Fib2;
  Fib1:=Fib1+Fib2;
  Fib2:=Fib1+Fib2;
end;
if Fib1=n then FibPost:=Fib2 else
if n>Fib1 then FibPost:=Fib2 else FibPost:=Fib1;
if n=1 then writeln('Нет числа Фибоначчи меньше 1 ',FibPost) else writeln(FibPre,' ',FibPost);
end.

Пример ввода:
3
Пример вывода:
2 5
Автор ответа: Gleb1Kosyrev
0
Var
i,n:integer;
Fib,Pre:array[1..2] of integer;

begin
readln(n);
if n=1 then writeln('нет меньше 1, 2') else
begin
Fib[1]:=1;
Fib[2]:=1;
i:=1;
while (Fib[2]<=n) and (Fib[1]<=n) do
begin
Pre[i mod 2+1]:=Fib[i mod 2+1];
Fib[i mod 2+1]:=Fib[1]+Fib[2];
if (Fib[i mod 2+1]<=n) and (Fib[1]+Fib[2]>n) then
if Fib[i mod 2+1]=n then
Автор ответа: Gleb1Kosyrev
0
VAR
Fib1,Fib2,n,FibPrev,point:integer;
begin
readln(n);
Fib1:=1;
Fib2:=1;
while (n>Fib1) and (n>Fib2) do
begin
if Fib1+Fib2>=n then
begin
FibPrev:=Fib2;
point:=1;
break;
end;
Fib1:=Fib1+Fib2;
if Fib1+Fib2>=n then
begin
FibPrev:=Fib1;
point:=2;
break;
end;
Fib2:=Fib1+Fib2;
end;
writeln(FibPrev);
Автор ответа: Gleb1Kosyrev
0
if Fib1+Fib2<>n then writeln(Fib1+Fib2) else
begin
if point=1 then Fib1:=Fib1+Fib2 else Fib2:=Fib2+Fib1;
writeln(Fib1+Fib2);
end;
end.
Похожие вопросы
Предмет: Математика, автор: narminakakharmanova4