Mai intai trebuie sa te autentifici.
Cod sursa(job #688899)
Utilizator | Data | 23 februarie 2012 22:28:52 | |
---|---|---|---|
Problema | Patrate2 | Scor | 90 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 1.13 kb |
var v:array [1..3500] of shortint;
n, i, j, l, r, rs, m, p:longint;
f, g:text;
buf2:array [1.. 1 shl 17] of char;
begin
assign (f, 'patrate2.in'); reset (f);
assign (g, 'patrate2.out'); settextbuf (g, buf2); rewrite (g);
read (f, n);
v[1]:=1; l:=1;
for i := 2 to n do
begin
r:=0;
for j := 1 to l do
begin
rs:=(v[j]*i+r) div 10;
v[j]:=(v[j]*i+r) mod 10;
r:=rs;
end;
while r<> 0 do
begin
inc (j);
v[j]:=r mod 10;
r:=r div 10;
end;
l:=j;
end;
for i := 1 to (n*n) div 2 do
begin
r:=0;
for j := 1 to l do
begin
rs:=(v[j]*4 +r) div 10;
v[j]:=(v[j]*4+r) mod 10;
r:=rs;
end;
while r <> 0 do
begin
inc (j);
v[j]:=r mod 10;
r:=r div 10;
end;
l:=j;
end;
if n*n mod 2 = 1 then
begin
r:=0;
for j := 1 to l do
begin
rs:=(v[j]*2 +r) div 10;
v[j]:=(v[j]*2+r) mod 10;
r:=rs;
end;
while r <> 0 do
begin
inc (j);
v[j]:=r mod 10;
r:=r div 10;
end;
l:=j;
end;
for i := l downto 1 do write (g, v[i]);
close (f); close (g);
end.