今天参加华为OD机试,总共有两道机试题,每道题200分,总共400分,华为那边要求是两道题全过。第一道题是磁盘容量排序,其实挺简单的,但我一直没调试好,导致心态直接崩了,后面第二题也没看,看来以后要好好刷题才行。
文章目录
- 1.题目大意
- 2.样例输入
- 3.样例输出
- 4.代码实现
1.题目大意
磁盘的容量单位有M、G、T,其关系为 1T = 1000G、1G = 1000M,如样例所示先输入磁盘的个数,再依次输入磁盘的容量大小,然后按照从小到大的顺序对磁盘容量进行排序并输出。
2.样例输入
320M1T3G3.样例输出
20M3G1T4.代码实现
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;intStrToInt(string str){if(str[str.size()-1]=='M'){returnstoi(str.substr(0,str.size()-1));}elseif(str[str.size()-1]=='G'){returnstoi(str.substr(0,str.size()-1))*1000;}elseif(str[str.size()-1]=='T'){returnstoi(str.substr(0,str.size()-1))*1000000;}return0;}boolCompare(conststring&strA,conststring&strB){inta=StrToInt(strA);intb=StrToInt(strB);// 升序排序returna<b;}intmain(void){intn;while(cin>>n){string str;vector<string>vec;while(n--){cin>>str;vec.push_back(str);}sort(vec.begin(),vec.end(),Compare);for(autoi:vec){cout<<i<<endl;}}return0;}