最大的正整数(用Pascal解)

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:52:31
Description

输入n个正整数Xi,输出由这些正整数拼接而成的最大正整数。

Input

第一行只有一个正整数:n
第二行共有n个正整数,数与数之间用一个空格隔开
( 1 < n <= 20 )
( 1 < Xi < 30 000 000 )

Output

只有一行且只有一个正整数:拼接而成的最大正整数

Sample Input

3
13 312 343

Sample Output

34331213
大家可以去一个网站试一试:http://218.75.87.27:8080/JudgeOnline/
对了的话再有悬赏 题号1042

var a,c:array[1..100] of string;
b:array[1..100] of qword;
i,l,k,n,s,p:integer;
j:string;
begin
readln(n);
read(j);k:=1;
for i:=1 to n do
begin
while (j[k]<>' ')and(j[k]<>chr(13))and(j[k]<>chr(0)) do
begin a[i]:=a[i]+j[k];inc(k);end;
c[i]:=a[i];
if s<length(a[i]) then s:=length(a[i]);
while (j[k]=' ')or(j[k]=chr(13))or(j[k]=chr(0)) do inc(k);
end;
for i:=1 to n do
begin
l:=length(a[i]);
for k:=1 to s-l do
a[i]:=a[i]+'0';
end;
for i:=1 to n do val(a[i],b[i],p);
j:='';
for i:=1 to n-1 do
for l:=i+1 to n do
if b[i]<b[l] then
begin
j:=c[i];
c[i]:=c[l];
c[l]:=j;
end;
for i:=1 to n do write(c[i]);
end.

字典序排序,贪心插入
注意有一个小细节<