program fibonachi; {$APPTYPE CONSOLE} uses SysUtils, Windows; type long=record n:word; a:array[0..10000] of byte; end; var f1,f2,f3:long; n,i,j:integer; time:int64; function s(a,b:long):long; var c:long; os,i:integer; begin if a.n>b.n then c.n:=a.n else c.n:=b.n; os:=0; for i:=1 to c.n do begin c.a[i]:=(a.a[i]+b.a[i]+os) mod 10; os:=(a.a[i]+b.a[i]+os) div 10; end; if os>0 then begin c.n:=c.n+1;c.a[c.n]:=os;end; //s:=c; for i:=1 to c.n do s.a[i]:=c.a[i]; s.n:=c.n; end; begin readln(n); time:=GetTickCount; //f1:='1'; f2:='1'; f1.n:=1;f1.a[1]:=1; f2.n:=1;f2.a[1]:=1; for i:=3 to n+1 do begin //f3:=s3(f1,f2); f3:=s(f1,f2); for j:=1 to f2.n do f1.a[j]:=f2.a[j]; f1.n:=f2.n; for j:=1 to f3.n do f2.a[j]:=f3.a[j]; f2.n:=f3.n; //f1:=f2;f2:=f3; end; //writeln(f3); for i:=f3.n downto 1 do write(f3.a[i]); writeln; time:=GetTickCount-time; writeln((time/1000):0:5); readln; end.