字串数字
问题描述
小明用字母A对应数字1,B对应2,以此类推,用Z代表26.对应于27以上的数字,小明用两位或更长位的字符串来对应,例如AA对应27,AB对应28,AZ对应52,LQ对应329。
请问,LANQIAO对应的数字是多少?
思路
简单来看,就是将10进制变成26进制,仿写26进制来做出答案。但此题是个填空题,使用计算器暴力解决是简单的。
代码如下
#include <stdio.h>
#include <string.h>
int main(){
char a[8] = "LANQIAO";
double x=0;//26进制相对于10进制的结果
for(int i=6;i>=0;i--)
{
double v = 1; //26进制进一等于26,v表示十进制进的结果
int m = 6-i;
for(int t = 0;t<m;t++)
v =v*26;
if(m==0){
if((a[i]=='O'))
x = x+ 15;
}
else{
if(a[i]=='A'){
x = x+ 1*v;
}
if(a[i]=='I')
x =x+ 9*v;
if(a[i]=='Q')
x =x+ 17*v;
if(a[i]=='N')
x =x+ 14*v;
if(a[i]=='L')
x =x+ 12*v;
}
printf("\n%c: x:%f v:%f\n",a[i],x,v);
}
printf("\n%f",x);
}
结果图
注:答案只取整数部分