Pagini recente » Cod sursa (job #1966289) | Cod sursa (job #186237) | Cod sursa (job #57580) | Cod sursa (job #346555) | Cod sursa (job #68399)
Cod sursa(job #68399)
type nr_mare=array[0..50000]of longint;
var v,x,s1,s2,p1,s,dp,fin,rez:nr_mare;
i,j,aux:longint;
c:char;
procedure div2(a:nr_mare;var b:nr_mare);
var i,r:longint;
begin
if a[a[0]]=1 then
begin
dec(a[0]);
a[a[0]]:=a[a[0]+1]*10+a[a[0]];
end;
b[0]:=a[0];
r:=0;
for i:=a[0] downto 1 do
begin
b[i]:=(r*10+a[i]) div 2;
r:=a[i] mod 2;
end;
end;
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
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;
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);
fillchar(s2,sizeof(s2),0);
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.