計算機考研複試真題 大整數排序
阿新 • • 發佈:2018-11-07
題目描述
對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 namespacestd; 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; }