翻转排序

来源:互联网 发布:硕鼠for mac 编辑:程序博客网 时间:2024/04/29 13:46

翻转排序

Time Limit: 1000MS Memory limit: 65536K

题目描述

给你一组正整数,请编写一个程序把每个整数翻转,然后按升序排序输出,翻转后前面的零要消掉。

输入

第一个整数n1≤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<algorithm>using namespace std;#define inf 1000100long long po(int  x,int y){long long s=10;if(y==0)return 1;    for(int i=1;i<y;i++)    s=s*10;    return s;}int main(){    int n;    long long b[inf];    char a[inf][20];       scanf("%d",&n);        memset(b,0,sizeof(b));        for(int i=0;i<n;i++)        {             scanf("%s",a[i]);             for(int j=strlen(a[i])-1;j>=0;j--)             b[i]+=(a[i][j]-'0')*po(10,j);                    }        sort(b,b+n);        for(int i=0;i<n;i++)        printf("%lld\n",b[i]);    }


0 0