很多人一看到这题就想到了从最高位开始比较,但是这种方法比较难实现,所以我们可以把它转化一下:
先全部弄成同样长度的,再排序,最后去掉0拼在一起
首先是判断长度的函数:
long long len(long long x)
{
long q=x,k=0;
while(q!=0)
{
q/=10;
k++;
}
return k;
}
主函数部分较容易理解,其中这个数组是保存添0的个数的:
int main()
{
long long n,maxlen;
cin>>n;
long long a[n],t[n];
for(long long i=0;i<=n-1;i++) t[i]=1;
for(long long i=0;i<=n-1;i++) cin>>a[i];
maxlen=0;
for(long long i=0;i<=n-1;i++)
{
if(len(a[i])>maxlen) maxlen=len(a[i]);
}
for(long long i=0;i<=n-1;i++)
{
t[i]=pow(10,maxlen-len(a[i]));
a[i]=a[i]*t[i];