题目
小明用字母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
当然,使用代码的话也是比直接计算要浪费时间,思路很简单,就按照十进制的算就好了。拿一个十进制的数对照着写。
代码
//1463: [蓝桥杯2019初赛]年号字串
#include <iostream>
#include <algorithm>
using namespace std;
char al[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
int main(){
int n = 2019;
int a;
string ans;
while(n > 26){
a = n % 26;
ans += al[a-1];
n /= 26;
}
ans += al[n-1];
reverse(ans.begin(), ans.end());
cout<<ans;
return 0;
}