其他分享
首页 > 其他分享> > 第十届蓝桥杯——试题B年号字符

第十届蓝桥杯——试题B年号字符

作者:互联网

【问题】
小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。
对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。
请问 2019 对应的字符串是什么?

一:(该解题方法来源于网络)

#include <stdio.h>
#include <stdlib.h>
//26进制
int main()
{
    int a=0,b=0,c=0;//感觉是三位数
    int y=2019;
    while(y--){
        a++;
        if(a==27){
            a=1;
            b++;
            if(b==27){
                b=1;
                c++;//c最后加,则c为最高位
            }
        }
    }
    printf("%c %c %c",c+'A'-1,b+'A'-1,a+'A'-1);
    return 0;
    //答案B Y Q
}

printf("%c %c %c",c+'A'-1,b+'A'-1,a+'A'-1);

//这一步是将数字转换为字符,‘A’本身就代表1;
类似字符转换为数字即为 c-‘0’

二 这么久不写代码,不动脑筋,竟然连除余的含义都忘记!

#include <iostream>
using namespace std;

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 main() {
   int num;
   string ans = "";
   scanf("%d", &num);
   while(num) {
   	ans += str[num % 26]; //除余所得到的是余数
   	num /= 26;
   }
   for (int i = ans.size() - 1; i >= 0; i--) {  //倒序输出
   	cout << ans[i];
   }
   return 0;
}

标签:26,27,试题,第十届,int,蓝桥,num,ans,对应
来源: https://blog.csdn.net/weixin_45962274/article/details/114307202