Cod sursa(job #169410)

Utilizator DanielGGlodeanu Ioan Daniel DanielG Data 1 aprilie 2008 17:56:13
Problema Nunta Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.04 kb
type nu=array[0..500] of longint;
const baza=100000;
var a,b,c:nu;
nr,n,i:longint;
f,g:text;
rr,r:word;

function max(X,Y:integer):integer;
begin
if x>y then max:=x
else max:=y;
end;

procedure afisare(a:nu);
var f:text;
    i:integer;
    p:longint;
begin
assign(g,'nunta.out');rewrite(g);
write(g,a[a[0]]);
for i:=a[0]-1 downto 1 do begin
    p:=baza div 10;
    while (p>a[i])and(p>1) do begin
          write(g,0);
          p:=p div 10;
    end;
    write(g,a[i]);
end;
end;

begin
assign(f,'nunta.in');reset(f);
assign(g,'nunta.out');rewrite(g);
read(f,n);
if n=1 then write(g,'1')
else if n=2 then write(g,'2')
else
begin
a[0]:=1;
b[0]:=1;
a[1]:=1;
b[1]:=2;
nr:=2;
while nr<>n do
begin
c[0]:=max(a[0],b[0]);
r:=0;
for i:=1 to c[0] do
begin
rr:=(a[i]+b[i]+r) div baza;
c[i]:=(a[i]+b[i]+r) mod baza;
r:=rr;
end;
if r>0 then
begin
inc(c[0]);
c[c[0]]:=r;
inc(a[0]);
inc(b[0]);
end;
for i:=1 to c[0] do
begin
a[i]:=b[i];
b[i]:=c[i];
end;
inc(nr);
end;
afisare(c);
end;
close(f);
close(g);
end.