1) Решение с рекурсии. Программа проста в понимании, но неэффективна при больших значениях function f(i: integer): longint; begin if i < 2 then f := 1 else f := f(i - 1) + f(i - 2); end;
begin writeln('f(10) = ', f(10)); writeln('f(25) = ', f(25)); writeln('f(40) = ', f(40)); end. 2) Решение с динамического программирования. Вычисляет намного быстрее, чем решение с рекурсией. var i: integer; f: array[0..40] of longint; begin f[0] := 1; f[1] := 1; for i := 2 to 40 do f[i] := f[i - 1] + f[i - 2]; writeln('f(10) = ', f[10]); writeln('f(25) = ', f[25]); writeln('f(40) = ', f[40]); end. 3) Решение с моделирования. Использует меньше памяти. function f(i: integer): longint; var a, b: longint; j: integer; begin if i < 2 then f := 1 else begin a := 0; b := 1; for j := 0 to i do begin b := a + b; a := b - a; end; f := a; end; end;
Это в том случае, когда нужно, чтобы компьютер сам выдавал рандомные числа:
var a:array [1..100] of integer; i: integer; begin for i:=1 to 100 do begin a[i]:=random (100)-50; if (a[i] mod 3=0)and(a[i] mod 6<>0) then write(a[i]); end; end.
если же есть определенный ряд чисел, то программа будет выглядеть вот так:
var a:array [1..100] of integer; i, n: integer; begin read(n); - здесь вводим кол-во чисел. for i:=1 to n do begin read(a[i]); - вводим числа с клавиатуры. if (a[i] mod 3=0)and(a[i] mod 6<>0) then write(a[i], ' '); end; end.
250
Объяснение:
b = (20 + 5)
a =( 20 +5) * 100