Cod sursa(job #307291)

Utilizator costyv87Vlad Costin costyv87 Data 23 aprilie 2009 20:44:23
Problema Patrate2 Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.04 kb
type vector=array[1..100000] of 0..9;
var v:vector;
    p,n,l,w:longint;
    i,j:longint;
        f,g:text;
procedure inm;
var i,r,r2:longint;
begin
r:=0;
for i:=1 to l do begin
r2:=(v[i]*2+r) div 10;
v[i]:=(v[i]*2+r) mod 10;
r:=r2;
end;
if r<>0 then begin inc(l); v[l]:=r; end;
end;
procedure inmult(nr:longint);
var a:array[1..11] of 0..9;
    v2:vector;
    l2,r,r2:longint;
begin
l2:=0;
while nr<>0 do begin
inc(l2);
a[l2]:=nr mod 10;
nr:=nr div 10;
end;
fillchar(v2,l+l2+2,0);
for i:=1 to l2 do begin
r:=0;
for j:=1 to l do begin
r2:=(v2[j+i-1]+(a[i]*v[j])+r) div 10;
v2[j+i-1]:=(v2[j+i-1]+(a[i]*v[j])+r) mod 10;
r:=r2;
end;
if r<>0 then v2[i+l]:=r;
end;
if v2[l+l2]<>0 then l:=l+l2
              else l:=l+l2-1;
v:=v2;
end;
begin
assign(f,'patrate2.in'); reset(f);
assign(g,'patrate2.out'); rewrite(g);
read(f,n);
p:=1;
v[1]:=1;
l:=1;
{for i:=1 to n*n do p:=p*2;
for i:=1 to n do p:=p*i;}
for i:=1 to n do
for j:=1 to n do inm;
for w:=1 to n do inmult(w);
for i:=l downto 1 do write(g,v[i]);
close(g);
end.