题目
小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。
对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。
请问 2019 对应的字符串是什么?
分析
一共有26个字母,说明该字符表示是以26为模来表示的,那么2019的字符串的表示,就是对于2019进行十进制转二十六进制运算。
计算过程
用2019除以26,商为77,余17;
用 77 除以26,商为2,余25;
用 2 除以26,商为0,余2;
则2019的二十六进制应该为’2‘, ’ 25‘ ,’17‘ ,即BYQ
代码
int main()
{
char str[27] = {'0','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 n = 2019;
int m;
string s = "";//这里注意要用双引号,因为是字符串变量
while(n)
{
m=n%26;
if(m==0)
{
s=s+'Z';
n=n/26-1;
}
else
{
s=s+str[m];
n/=26;
}
}
for(int i=s.size()-1;i>=0;i--)
cout<<s[i];
cout<<endl;
return 0;
}
一定要注意这里面的临界问题,比如说n取52的时候,不要让它输出为B0了。
运行截图
总结
多注意题目给出的样例信息,灵活运用字符数组、字符串变量等等。