经过一个下午的努力,我终于将我学习OI三年的一个夙愿完成了。那就是成功AC了一道题:超长字符串
type ar=array[0..1001] of longint;
var i,j,k,n,t:longint;
a,mid,num,ans:ar;
start:ar;startpos:longint; //起始数字及头部在起始数字的位置
pd,done,wangzilong:boolean;
c:char;
procedure minus(var mid:ar); //将数字减一得到高精度数
var g:longint;
begin
dec(mid[1]);
for g:=1 to mid[0] do
begin
if mid[g]>=0 then break;
inc(mid[g],10);dec(mid[g+1]);
end;
if mid[mid[0]]=0 then dec(mid[0]);
end;
procedure plus(var mid:ar); //将数字加一得到高精度数
var g:longint;
begin
inc(mid[1]);
for g:=1 to mid[0] do
begin
if mid[g]<10 then break;
dec(mid[g],10);inc(mid[g+1]);
end;
if mid[mid[0]+1]>0 then inc(mid[0]);
end;
function compare(x,y:ar):longint;
var g:longint;
begin
for g:=1001 downto 1 do
begin
if x[g]>y[g] then exit(1);
if x[g]<y[g] then exit(-1);
end;
exit(0);
end;
procedure gjdminus(var start:ar;mid:ar);
var g:longint;
begin
for g:=1 to 1000 do
begin
start[g]:=start[g]-mid[g];
if start[g]<0 then
begin
inc(start[g],10);
dec(start[g+1]);
end;
end;
end;
procedure cheng(var start:ar;t:longint);
var g:longint;
begin
for g:=1 to 1000 do start[g]:=start[g]*t;
for g:=1 to 1000 do
type ar=array[0..1001] of longint;
var i,j,k,n,t:longint;
a,mid,num,ans:ar;
start:ar;startpos:longint; //起始数字及头部在起始数字的位置
pd,done,wangzilong:boolean;
c:char;
procedure minus(var mid:ar); //将数字减一得到高精度数
var g:longint;
begin
dec(mid[1]);
for g:=1 to mid[0] do
begin
if mid[g]>=0 then break;
inc(mid[g],10);dec(mid[g+1]);
end;
if mid[mid[0]]=0 then dec(mid[0]);
end;
procedure plus(var mid:ar); //将数字加一得到高精度数
var g:longint;
begin
inc(mid[1]);
for g:=1 to mid[0] do
begin
if mid[g]<10 then break;
dec(mid[g],10);inc(mid[g+1]);
end;
if mid[mid[0]+1]>0 then inc(mid[0]);
end;
function compare(x,y:ar):longint;
var g:longint;
begin
for g:=1001 downto 1 do
begin
if x[g]>y[g] then exit(1);
if x[g]<y[g] then exit(-1);
end;
exit(0);
end;
procedure gjdminus(var start:ar;mid:ar);
var g:longint;
begin
for g:=1 to 1000 do
begin
start[g]:=start[g]-mid[g];
if start[g]<0 then
begin
inc(start[g],10);
dec(start[g+1]);
end;
end;
end;
procedure cheng(var start:ar;t:longint);
var g:longint;
begin
for g:=1 to 1000 do start[g]:=start[g]*t;
for g:=1 to 1000 do