1) Решение методом рекурсии. Программа проста в понимании, но неэффективна при больших значениях var n: integer; function f(i: integer): longint; begin if i < 2 then f := 1 else f := f(i - 1) + f(i - 2); end; begin read(n); writeln(f(n)); end.
2) Решение методом динамического программирования. Намного быстрее метода с рекурсией. var i, n: integer; f: array[0..50] of longint; begin read(n); f[0] := 1; f[1] := 1; for i := 2 to n do f[i] := f[i - 1] + f[i - 2]; writeln(f[n]); end.
3) Решение методом моделирования. Использует меньше памяти. var n, a, b, i: integer; begin read(n); if n < 2 then a := 1 else begin a := 0; b := 1; for i := 0 to n do begin b := a + b; a := b - a; end; end; writeln(a); end.
// PascalABC.NET 3.0, сборка 1128 var i,j,k,n,p:longint; f:array[1..10,1..2] of longint; begin p:=2; i:=1; f[1,1]:=1; f[1,2]:=1; Write('Введите натуральное число не больше 2 147 483 647: '); Read(n); while n<>1 do begin if (n mod p)=0 then begin if f[i,1]<>p then begin Inc(i); f[i,1]:=p; f[i,2]:=1 end else Inc(f[i,2]); n:=n div p end else inc(p) end; k:=i; for i:=2 to k do for j:=1 to f[i,2] do Write(f[i,1],' '); Writeln end.
Тестовое решение: Введите натуральное число не больше 2 147 483 647: 37534 2 7 7 383
uses Crt;
var a,b,output1,output2:real;
begin
write('Введите а= ');Readln(a);
write('Введите b= ');Readln(b);
output1:=6*a+15*b-13*b;
output2:=(a+b)*(a-b);
writeln(output1:5:2,output:8:2);
readln;
end.