讨论 / 30分 找错 谢谢啦
opiece 2011-04-17 21:58:00
点我顶贴 收藏 删除
var

i,j,m,n,k,len,la,lb,lc,x:longint;

sn,s:array[1..1000] of ansistring;

a,b,c:array[1..10000] of longint;

p:ansistring;

begin

readln(n);

for i:=1 to n do

begin

readln(sn[i]);

readln(s[i]);

end;

for i:=1 to n-1 do

for j:=i+1 to n do

if (s[i]<s[j])or(s[i]=s[j])and(sn[i]>sn[j]) then

begin

p:=sn[i]; sn[i]:=sn[j]; sn[j]:=p;

p:=s[i]; s[i]:=s[j]; s[j]:=p;

end;

for i:=1 to n do

begin

la:=length(s[i]);

fillchar(a,sizeof(a),0);

for j:=1 to la do a[la+1-j]:=ord(s[i][j])-ord('0');

k:=1; x:=0;

while (k<=la) or (k<=lb) do

begin

b[k]:=a[k]+b[k]+x;

x:=b[k] div 10;

b[k]:=b[k] mod 10;

inc(k);

end;

if x>0 then begin lb:=k; b[k]:=x; end

else lb:=k-1;

end;

for i:=1 to n do

writeln(sn[i]);

for i:=490 downto 1 do

write(b[i]);

end.

#1 opiece@2011-04-17 21:58:00
回复 删除
终于AC了!!!!!!

var

i,j,m,n,k,len,la,lb,lc,x:longint;

sn,s:array[1..100000] of ansistring;

a,b,c:array[1..10000] of longint;

p:ansistring;

begin

readln(n);

for i:=1 to n do

begin

readln(sn[i]);

readln(s[i]);

end;

for i:=1 to n-1 do

for j:=i+1 to n do

if (length(s[i])<length(s[j]))

or(length(s[i])=length(s[j]))and(s[i]<s[j])

or(length(s[i])=length(s[j]))and((s[i]=s[j])and(sn[i]>sn[j])) then

begin

p:=sn[i]; sn[i]:=sn[j]; sn[j]:=p;

p:=s[i]; s[i]:=s[j]; s[j]:=p;

end;

for i:=1 to n do

begin

la:=length(s[i]);

fillchar(a,sizeof(a),0);

for j:=1 to la do a[la+1-j]:=ord(s[i][j])-ord('0');

k:=1; x:=0;

while (k<=la) or (k<=lb) do

begin

b[k]:=a[k]+b[k]+x;

x:=b[k] div 10;

b[k]:=b[k] mod 10;

inc(k);

end;

if x>0 then begin lb:=k; b[k]:=x; end

else lb:=k-1;

end;

for i:=1 to n do

writeln(sn[i]);

for i:=490 downto 1 do

write(b[i]);

end.

排序+高精度

查看更多回复
提交回复