第十届蓝桥杯——年号字串—附代码(CN练习记录)
【问题描述】
小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。
对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。
请问 2019 对应的字符串是什么?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个大写英文字符串,在提交答案时只填写这个字符串,注意全部大写,填写多余的内容将无法得分。
【答案】
BYQ
【代码】
#include<iostream>
#include<string>
using namespace std;
int main()
{
int year,i=0;
string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char a[10];
cin >> year;
int ys;
do
{
ys = year % 26;
if (!ys) //解决用正常的进制转换时 输入26时错误
{
a[i++] = 'Z';
year = year / 26-1;
}
else
{
a[i++] = char(ys + 64);
year = year / 26;
}
} while (year);
for ( ; i>=0; i--)
{
cout << a[i - 1];
}
return 0;
}
【验证】
输入26 正确为Z 进制转化输出(错误)结果为A@(@的ASCII码为64,A的ASCII码为65)
输入676(26*26) 正确为YZ(25*26+26) 进制转化输出(错误)错误为A@@(@的ASCII码为64,A的ASCII码为65)