Ввести натуральное число N и вычислить сумму всех чисел Фибоначчи, меньших N....

0 голосов
763 просмотров

Ввести натуральное число N и вычислить сумму всех чисел Фибоначчи, меньших N. Предусмотрите защиту от ввода отрицательного числа N.


Информатика (22 баллов) | 763 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Var
n, a1, a2, sum: longint;
begin
repeat
write ('Введите n: ');
readln (n);
until n>=0;

a1:=1;
while (a2begin
inc (sum, a2);
a2:=a2+a1;
a1:=a2-a1;
end;
write ('Сумма всех чисел Фибоначчи, меньших n: ', sum);
end.

(3.8k баллов)
0 голосов

//PascalABC.NET 3.2 сборка 1318

//Вариант по формуле Бине

Var
  n,fibn:real;
  i:integer;
begin
readln(n);
if n<=0 then writeln('Не существует чисел Фиббоначи меньше 0')<br>else
  begin
  i:=0;
    while fibn      begin
        fibn:=(power((1+sqrt(5))/2,i)-power((1-sqrt(5))/2,i))/sqrt(5);
        inc(i);
      end;
   writeln((power((1+sqrt(5))/2,i)-power((1-sqrt(5))/2,i))/sqrt(5)-1);
     end;
 end.


//В лоб

Var
  sum,n,buf,fib0,fib1:integer;
 
 function fibb(fib0,fib1:integer):integer;
  begin
    result:=fib0+fib1;
  end;

begin
fib0:=0;
fib1:=1;
readln(n);
if n<=0 then<br>   writeln('Не существует чисел Фиббоначи меньше 0')
else
  begin
    if fibb(fib0,fib1)>=n then sum:=0 else
    begin
      while fibb(fib0,fib1)        begin
         buf:=fib1;
         fib1:=fibb(fib0,fib1);
         fib0:=buf;
        end;
      sum:=fibb(fib1,fibb(fib0,fib1))-1;
   end;
   writeln(sum);
  end;
end.

Пример ввода:
12
Пример вывода:
20

(38.6k баллов)
0

Я в этом не разбираюсь, но, какой вариант выполнен с помощью цикла какого нибудь?

0

Оба варианта работают с циклом while.