您的位置:首页 > 其它

2014寒假ACM集训13级PK赛-翻转排序

2014-03-09 21:44 344 查看


翻转排序


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 <string.h>
#include <math.h>

long long num[1000001];

int kp(long long *left,long long *right)
{
long long *l,*r;
long long k;

if (left >= right)
return 1;

l = left;
r = right;
k = *l;
while (l < r)
{
while (*r >= k && l < r)
r--;
*l = *r;

while (*l <= k && l < r)
l++;
*r = *l;
}
*r = k;

kp(left,r - 1);
kp(l + 1,right);
}

int main()
{
int n;
long long tmp1,tmp2,tmp3;
scanf ("%d",&n);
int i;
for (i = 0;i < n;i++)
{
scanf ("%lld",&tmp1);
tmp2 = 0;
while (tmp1 != 0)
{
tmp3 = tmp1 % 10;
tmp1 /= 10;
tmp2 *= 10;
tmp2 += tmp3;
}
num[i] = tmp2;
}

kp(num,&num[n - 1]);
for (i = 0;i < n;i++)
printf ("%lld\n",num[i]);
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: