M00PAIR - 0 0 Pairs

Tác giả: ladpro98

Ngôn ngữ: Pascal

program m00pair;
uses    math;
type    big=ansistring;
const   maxn=1001;
        fi='';
var     f:array[1..maxn] of big;
        n,i:longint;
        inp:text;

function sum(a,b:big):big;
var     x,y,s,carry,i:longint;
        c:big;

begin
        if length(a)<length(b) then c:=b
        else
        c:=a;
        carry:=0;
        while length(a)<length(b) do a:='0'+a;
        while length(b)<length(a) do b:='0'+b;
        for i:=length(a) downto 1 do
        begin
                x:=ord(a[i])-48;
                y:=ord(b[i])-48;
                s:=x+y+carry;
                carry:=s div 10;
                c[i]:=chr(s mod 10 + 48);
        end;
        if carry>0 then c:='1'+c;
        exit(c);
end;

procedure dp(i:longint);
var     j:longint;
begin
        if i>n then
        begin
                for j:=n+1 to i do
                f[j]:=sum(f[j-1],sum(f[j-2],f[j-2]));
                n:=i;
        end;

end;

begin
        assign(inp,fi);
        reset(inp);
        f[1]:='0';f[2]:='1';n:=2;
        while not eof(inp) do
        begin
                readln(inp,i);
                dp(i);
                writeln(f[i]);

        end;
        close(inp);
end.

Download