一道vijos题的纠错 p1024

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:15:50
const
mm:array[1..10] of longint=(1,10,100,1000,10000,100000,100000,10000000,100000000,1000000000);
var
n,l,i,all,j:longint;
move:boolean;
num:array[1..1000] of longint;
procedure cha(var a,b:integer);{交换过程}
var
s:longint;
begin
s:=a;
a:=b;
b:=s;
end;
function go(k:longint):longint;{这个函数是求最大值与最小值的差,就是下一个数}
var
a:array[1..10] of integer;
i,j,s:longint;
begin
i:=0;
while k>0 do
begin
inc(i);
a[i]:=k mod 10;
k:=k div 10;
end;{把数字转换成一位一位的,感觉数据不会太强,所以直接用的integer存放}

for j:=i downto 2 do
begin
for s:=j downto 2 do
if a[s]>a[s div 2] then cha(a[s],a[s div 2]);
cha(a[j],a[1]);{这个堆排序不知

1.不要用堆排,没有意义。

2.要开到INT64,因为maxlongint是初始数据,交换完会有超过maxlongint,比如2100009999

附程序:program ex;
var a:array[0..100] of char;
b:array[1..10000] of string;
i,j,k,f,n:longint;
sum1,sum2:int64;
s1,s2,s3:string;
begin
assign(input,'e:\kabu.in');
reset(input);
assign(output,'e:\kabu.out');
rewrite(output);
while not(eof) do
begin
i:=1;n:=1;f:=0;k:=0;
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
while not(eoln) do
begin
read(a[i]);
b[n]:=b[n]+a[i];
inc(i);
end;
readln;
repeat
for j:=1 to i-1 do
begin
for k:=j+1 to i-1 do
begin
if a[j]>a[k] then
begin
a[0]:=a[j];
a[