Pagini recente » Cod sursa (job #1098306) | Cod sursa (job #2129144) | Cod sursa (job #2740636) | Cod sursa (job #2607128) | Cod sursa (job #190167)
Cod sursa(job #190167)
var dim,n,putere,nou,rest,i,k,j,x,inv,aux,r,cif:longint;
rez1,rez,rez2:array[1..4000] of integer;
f:text;
begin
assign(f,'patrate2.in');reset(f);
read(f,n);
close(f);
putere:=0;
dim:=1;
rez[dim]:=1;
repeat
rest:=0;
for i:=1 to dim do begin
nou:=rez[i]*2+rest;
rest:=nou div 10;
rez[i]:=nou mod 10;
end;
if rest<>0 then begin
inc(dim);
rez[dim]:=rest;
end;
inc(putere);
until putere=n*n;
for i:=1 to dim div 2 do begin
aux:=rez[i];
rez[i]:=rez[dim-i+1];
rez[dim-i+1]:=aux;
end;
inv:=0;
x:=n;
repeat
r:=x mod 10;
inv:=inv*10+r;
x:=x div 10;
until x=0;
i:=1;
cif:=0;
if (n=10) or (n=20) or (n=30) or (n=40) or (n=50) or (n=60) or (n=70) or (n=80) or (n=90) then begin
rez1[1]:=inv;
rez1[2]:=0;
cif:=2;
end
else if n=100 then begin
rez1[1]:=1;
rez1[2]:=0;
rez1[3]:=0;
cif:=3;
end
else
repeat
inc(cif);
rez1[i]:=inv mod 10;
inc(i);
inv:=inv div 10;
until inv=0;
k:=0;
for j:=cif downto 1 do begin
for i:=dim downto 1 do begin
rez2[dim-i+1+k]:=rez2[dim-i+1+k]+rez[i]*rez1[j];
end;
inc(k);
end;
for i:=1 to cif+dim-2 do
if rez2[i] div 10<=10 then begin
rez2[i+1]:=rez2[i+1]+(rez2[i] div 10);
rez2[i]:=rez2[i] mod 10;
end;
assign(f,'patrate2.out');rewrite(f);
for i:=cif+dim-1 downto 1 do
write(f,rez2[i]);
close(f);
end.