1. 程式人生 > >計算機考研複試真題 大整數排序

計算機考研複試真題 大整數排序

題目描述

對N個長度最長可達到1000的數進行排序。

輸入描述:

輸入第一行為一個整數N,(1<=N<=100)。
接下來的N行每行有一個數,數的長度範圍為1<=len<=1000。
每個數都是一個正數,並且保證不包含字首零。

輸出描述:

可能有多組測試資料,對於每組資料,將給出的N個數從小到大進行排序,輸出排序後的結果,每個數佔一行。
示例1

輸入

3
11111111111111111111111111111
2222222222222222222222222222222222
33333333

輸出

33333333
11111111111111111111111111111
2222222222222222222222222222222222




/*程式設計思路:將測試資料存入到字串型別的向量中,按題目要求對字串排序輸出即可。*/
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace
std; static bool comp(string a,string b){ //按題意,重寫排序規則 if(a.length()<b.length()) return true; if(a.length()>b.length()) return false; if(a.length()==b.length()) return a<b; return false; } int main(){ int N=0; while(cin>>N){ vector
<string>vec(N,""); //儲存大整數,注意這種向量的初值。 for(int i=0;i<N;++i){ cin>>vec[i]; } sort(vec.begin(),vec.end(),comp); for(int i=0;i<N;++i){ cout<<vec[i]<<endl; } } return 0; }