1. 程式人生 > >學校OJ——26進位制(字串處理)

學校OJ——26進位制(字串處理)

問題 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; }