翻转排序
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
给你一组正整数,请编写一个程序把每个整数翻转,然后按升序排序输出,翻转后前面的零要消掉。
输入
第一个整数n(1≤n≤106)表明有多少个数字需要处理,接下来是n个整数。整数已空格分开,每行可以有任意多的整数。输入的整数≤1012 。
输出
n行排好序的整数。
示例输入
10 5 2233 1601 90100 13009 802 50000000 301 7654321 210
示例输出
5 5 12 103 109 208 1061 3322 90031 1234567
提示
来源
中国海洋大学第四届朗讯杯初级组
示例程序
#include<stdio.h>
#include<math.h>
long long a[1000000];
int main()
{
long long i,j,n,m,b[15],k,t,l,h;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
for(j=0;a[i]>=1;j++)
{
b[j]=a[i]%10;
a[i]=a[i]/10;
}
a[i]=0;
for(l=j-1,h=0;l>=0,h<j;l--,h++)
{
a[i]+=b[h]*pow(10,l);
}
}
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i<n;i++)
printf("%lld\n",a[i]);
}