Pagini recente » Cod sursa (job #677621) | Cod sursa (job #1788724) | Cod sursa (job #1008734) | Cod sursa (job #1323374) | Cod sursa (job #68575)
Cod sursa(job #68575)
type nr_mare=array[0..50000]of longint;
var v,x,s1,s2,s,dp,fin,rez:nr_mare;
i,j,aux:longint;
c:char;
procedure mult(var a,b,c:nr_mare);
var i,j:longint;
begin
c[0]:=a[0]+b[0]-1;
for i:=1 to a[0] do
for j:=1 to b[0] do
inc(c[i+j-1],a[i]*b[j]);
for i:=1 to c[0]-1 do
begin
inc(c[i+1],c[i] div 10);
c[i]:=c[i] mod 10;
end;
while c[c[0]]>9 do
begin
c[c[0]+1]:=c[c[0]] div 10;
c[c[0]]:=c[c[0]] mod 10;
inc(c[0]);
end;
end;
procedure add(var a,b,c:nr_mare);
var i,j:longint;
begin
c[0]:=a[0];
if b[0]>c[0] then
c[0]:=b[0];
for i:=1 to c[0] do
c[i]:=a[i]+b[i];
for i:=1 to c[0]-1 do
begin
inc(c[i+1],c[i] div 10);
c[i]:=c[i] mod 10;
end;
while c[c[0]]>9 do
begin
c[c[0]+1]:=c[c[0]] div 10;
c[c[0]]:=c[c[0]] mod 10;
inc(c[0]);
end;
end;
procedure scade(var a,b,c:nr_mare);
var i,j:longint;
begin
c[0]:=a[0];
if b[0]>c[0] then
c[0]:=b[0];
for i:=1 to c[0] do
begin
if a[i]>=b[i] then
c[i]:=a[i]-b[i]
else
begin
c[i]:=a[i]+10-b[i];
j:=i+1;
while a[j]=0 do
begin
a[j]:=9;
inc(j);
end;
dec(a[j]);
end;
end;
while c[c[0]]=0 do
dec(c[0]);
end;
begin
assign(input,'sarpe.in');reset(input);
assign(output,'sarpe.out');rewrite(output);
while not eoln do
begin
read(c);
inc(v[0]);
v[v[0]]:=ord(c)-48;
end;
if (v[0]=1)and(v[1]=1) then
begin
write('4');
close(output);
halt;
end;
for i:=1 to v[0] div 2 do
begin
aux:=v[i];
v[i]:=v[v[0]-i+1];
v[v[0]-i+1]:=aux;
end;
mult(v,v,x);
s1[0]:=1;
s1[1]:=2;
mult(x,s1,s);
mult(v,s1,s2);
scade(s,s2,fin);
s2:=dp;
s2[0]:=1;
s2[1]:=4;
add(fin,s2,rez);
for i:=rez[0] downto 1 do
write(rez[i]);
close(input);close(output);
end.