1463:[蓝桥杯2019初赛]年号字串

题目

小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26。对于27以上的数字,小明用两位或更长位的字符串来对应,例如AA 对应27,AB 对应28,AZ 对应52,LQ 对应329。请问2019 对应的字符串是什么?

思路

也是一道比较简单的填空题,直接写答案即可。考察是数的表示法。

举个例子:在10进制下,325 = 3×10^2 + 2×10^1 + 5× 10^0。

同理,这道题无非就是把10进制换成了26进制,把数字变成了字母。

因此对2019进行展开。计算机计算:26×26×26=17576 > 2019,26×26=676,因此最多也就三位。再根据 26×26×3=2028>2019,因此最高位只能是 "B",2019 - (26×26×2) = 667,再把667拆开,以此类推。

最终答案:BYQ

当然,使用代码的话也是比直接计算要浪费时间,思路很简单,就按照十进制的算就好了。拿一个十进制的数对照着写。

代码

 1//1463: [蓝桥杯2019初赛]年号字串
 2#include 
 3#include 
 4using namespace std;
 5char al[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 
 6'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 
 7'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
 8int main(){
 9    int n = 2019;
10    int a;
11    string ans;
12    while(n > 26){
13        a = n % 26;
14        ans += al[a-1];
15        n /= 26; 
16    }
17    ans += al[n-1]; 
18    reverse(ans.begin(), ans.end());
19    cout<

你可能感兴趣的:(1463:[蓝桥杯2019初赛]年号字串)