Pagini recente » Cod sursa (job #1437335) | Cod sursa (job #2734112) | Cod sursa (job #866828) | Cod sursa (job #1917309) | Cod sursa (job #6325)
Cod sursa(job #6325)
type vector=array[0..10010]of longint;
var i,j,n,m:longint;
fact,v,x,desc:vector;
pow:array[1..20]of vector;
procedure inmultire(nr:longint;var v:vector);
var i,m:longint;
begin
m:=0;
for i:=1 to v[0] do begin
v[i]:=v[i]*nr;
inc(v[i],m);
m:=v[i] div 10;
v[i]:=v[i] mod 10;
end;
while m>0 do begin
inc(v[0]);v[v[0]]:=m mod 10;
m:=m div 10;
end;
end;
procedure inmultire_mari(v,fact:vector;var x:vector);
var i,j,m:longint;
begin
m:=0;
for i:=1 to fact[0] do
for j:=1 to v[0] do inc(x[i+j-1],v[j]*fact[i]);
x[0]:=v[0]+fact[0]-1;
for i:=1 to x[0] do begin
x[i]:=x[i]+m;
m:=x[i] div 10;
x[i]:=x[i] mod 10;
end;
while m<>0 do begin
inc(x[0]);
x[x[0]]:=m mod 10;
m:=m div 10;
end;
end;
begin
assign(input,'patrate2.in');reset(input);
assign(output,'patrate2.out');rewrite(output);
readln(n);m:=sqr(n);
while m>0 do begin
inc(desc[0]);
desc[desc[0]]:=m mod 2;
m:=m div 2;
end;
pow[1,0]:=1;pow[1,1]:=2;
for i:=2 to desc[0] do
inmultire_mari(pow[i-1],pow[i-1],pow[i]);
v[0]:=1;v[1]:=1;
for i:=1 to desc[0] do begin
if desc[i]=1 then begin inmultire_mari(pow[i],v,x);v:=x;end;
for j:=1 to x[0] do x[j]:=0;
end;
for i:=1 to x[0] do x[0]:=0;
x[0]:=0;
fact[0]:=1;fact[1]:=1;
for i:=2 to n do inmultire(i,fact);
inmultire_mari(v,fact,x);
for i:=x[0] downto 1 do write(x[i]);
close(input);close(output);
end.