學校OJ——26進位制(字串處理)
阿新 • • 發佈:2018-12-18
問題 B: 26進位制數
時間限制: 1 Sec 記憶體限制: 32 MB
提交: 831 解決: 249
[提交][狀態][討論版]
題目描述
現在我們用A表示26,用B表示25,依次類推,到用Z表示1,即A=26, …X = 3, Y = 2, Z=1,用這種方式構建一個26進位制的計數方式。舉一個例子:(XD)26=(101)10 。
輸入
第一行數字N(N<50)表示有N行輸入資料。
接下來的N行,每行為一個長度不超過100的26進位制數。
輸出
升序輸出這些26進位制數,一行一個。
樣例輸入
2
XB
XX
樣例輸出
XX
XB
提示
即使是unsigned long long也裝不下。
分析:既然是字串處理,那麼肯定不可能將字元轉換成數字來處理(因為題目中已經有提示了)
其實很容易分析知道,這題的比較依據:
- 字串的長度(長的肯定大)
- 如果一樣長的話,就根據ASCII碼來排(根據ASCII碼從大到小排 為什麼?可以自己思考一下qwq)
程式碼如下:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(const string &a1,const string &a2) //自定義排序
{
if(a1.length ()==a2.length()) //如果長度相同,就按照ASCII碼從大到小來排序
return a1>a2;
else return a1.length()<a2.length();否則就按照長度排
}
int main()
{
int N;
cin>>N;
string a[55];
for(int i=0;i<N;i++)
cin>>a[i];
sort(a,a+N,cmp);
for(int i=0;i<N;i++)
cout<< a[i]<<endl;
return 0;
}