题目
题目传送门:1476:[蓝桥杯2019初赛]字串数字
思路
之前已经做过类似的题目了,考察的是进制的表示方法。例如,在10进制下:
88 = 10 ^ 8 + 8
888 = 100 ^ 8 + 10 ^8 + 8
只是这道题目将十进制转换为二十六进制罢了。根据公式展开即可。
代码
//1476:[蓝桥杯2019初赛]字串数字
#include<bits/stdc++.h>
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 getLocation(char a){
for(int i = 0; i < 26; i++){
if(al[i] == a)
return i;
}
return 0;
}
int main(){
string input = "LANQIAO"; //输入
int len = input.length(); //统计长度
long long ans = 0;
for(int i = 0; i < len; i++){
char tmp = input[i];
int location = getLocation(tmp) + 1;
ans += pow(26, len - i - 1) * location;
}
cout<<ans;
return 0;
}