大整数排序
题目描述
对N个长度最长可达到1000的数进行排序。
输入描述:
输入第一行为一个整数N,(1<=N<=100)。 接下来的N行每行有一个数,数的长度范围为1<=len<=1000。 每个数都是一个正数,并且保证不包含前缀零。
输出描述:
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
示例1
输入
3 11111111111111111111111111111 2222222222222222222222222222222222 33333333
输出
33333333 11111111111111111111111111111 2222222222222222222222222222222222
代码:
1 #include <cstdio> 2 #include <iostream> 3 #include <string> 4 #include <cstring> 5 #include <cstdlib> 6 #include <vector> 7 #include <algorithm> 8 using namespace std; 9 struct Node{ 10 char chr[1005]; 11 int len; 12 }node[105]; 13 vector<Node> vec; 14 bool cmp(Node a,Node b) 15 { 16 if(a.len!=b.len) return a.len<b.len; 17 else return strcmp(a.chr,b.chr)<0; 18 } 19 int main() 20 { 21 int n; 22 cin>>n; 23 for(int i=0;i<n;i++) 24 { 25 cin>>node[i].chr; 26 node[i].len=strlen(node[i].chr); 27 vec.push_back(node[i]); 28 } 29 sort(vec.begin(),vec.end(),cmp); 30 for(int i=0;i<n;i++) 31 { 32 cout<<vec[i].chr; 33 cout<<endl; 34 } 35 return 0; 36 }
天晴了,起飞吧