九度oj 题目1190:大整数排序

时间:2025-02-04 23:34:20

题目1190:大整数排序

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:4142

解决:1867

题目描述:

对N个长度最长可达到1000的数进行排序。

输入:

输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。

输出:

可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

样例输入:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
样例输出:
33333333
11111111111111111111111111111
2222222222222222222222222222222222
分析:将每个大整数看成字符串,如果长度不同,则按长度从小到大排序,否则按字典序排序。(直接按字典序排序不行,如例子,
回先输出1开头的。)
 #include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
bool cmp(string a, string b){
int len_a = a.length();
int len_b = b.length();
if(len_a != len_b)
return len_a < len_b;
else
return a < b;
} int main(){
int n;
string s;
vector<string> v;
while(cin >> n){
v.clear();
for(int i = ; i < n; i++){
cin >> s;
v.push_back(s);
}
sort(v.begin(), v.end(), cmp);
for(int i = ; i < n; i++){
cout << v[i] << endl;
}
}
//system("pause");
return ;
}