Pagini recente » Cod sursa (job #2047358) | Cod sursa (job #1665615) | Cod sursa (job #2863731) | Cod sursa (job #764320) | Cod sursa (job #38425)
Cod sursa(job #38425)
{ Next/preONI 2007 runda 4 }
program sdf;
var n,t:array[0..10000] of 0..9;
d:array[0..18] of 0..9;
z:array[1..10000] of integer;
f:text;
l,k,i,control,j,p,s,aux:integer;
c:char;
stop,b:boolean;
begin
{ citire date de intrare }
assign(f,'next.in');reset(f);
l:=0;
while not eoln(f) do begin
read(f,c);
l:=l+1;
val(c,n[l],control);
end;
readln(f);k:=0;
while not eof(f) do begin
read(f,c);
k:=k+1;
val(c,d[k],control);
end;
close(f);
{ inversez vectorii }
for i:=1 to l div 2 do begin
aux:=n[i];
n[i]:=n[l-i+1];
n[l-i+1]:=aux;
end;
for i:=1 to k div 2 do begin
aux:=d[i];
d[i]:=d[k-i+1];
d[k-i+1]:=aux;
end;
{ initializare vector ce are rol de inmultitor }
p:=1;
t[p]:=1;
s:=k;
for i:=1 to s do z[i]:=d[i];
{ generare m }
stop:=false;
while not stop do begin
i:=l;j:=s;b:=false;
while (i>=1)and(j>=1)and not b do
if n[i]=z[j] then begin
i:=i-1;
j:=j-1;
end
else b:=true;
if (n[i]<=z[j])and(l<=s) then
stop:=true
else
begin
{ crestem cu 1 vectorul t }
t[1]:=t[1]+1;
i:=1;
while t[i]>9 do begin
t[i]:=0;
t[i+1]:=t[i+1]+1;
i:=i+1;
end;
if i>p then p:=i;
{ inmultim d cu t }
for i:=1 to s do z[i]:=0;
for i:=1 to p do
for j:=1 to k do
z[i+j-1]:=z[i+j-1]+t[i]*d[j];
s:=p+k-1;
aux:=0;
for i:=1 to s do
if z[i]>=10 then begin
aux:=z[i] div 10;
z[i]:=z[i] mod 10;
z[i+1]:=z[i+1]+aux;
end
else aux:=0;
while aux>0 do begin
s:=s+1;
z[s]:=aux mod 10;
aux:=aux div 10;
end;
end;
end;
{ afisare }
assign(f,'next.out');rewrite(f);
for i:=s downto 1 do
write(f,z[i]);
close(f);
end.