百度2016实习真题-编号转化

题目链接

编号转换(百度2016实习生真题)

小B最近对电子表格产生了浓厚的兴趣,她觉得电子表格很神奇,功能远比她想象的强大。她正在研究的是单元格的坐标编号,她发现表格单元一般是按列编号的,第1列编号为A,第2列为B,以此类推,第26列为Z。之后是两位字符编号的,第27列编号为AA,第28列为AB,第52列编号为AZ。之后则是三位、四位、五位……字母编号的,规则类似。

表格单元所在的行则是按数值从1开始编号的,表格单元名称则是其列编号和行编号的组合,如单元格BB22代表的单元格为54列中第22行的单元格。

小B感兴趣的是,编号系统有时也可以采用RxCy的规则,其中x和y为数值,表示单元格位于第x行的有第y列。上述例子中的单元格采用这种编码体系时的名称为R22C54。

小B希望快速实现两种表示之间的转换,请你帮忙设计程序将一种方式表示的坐标转换为另一种方式。

输入

输入的第一行为一个正整数T,表示有T组测试数据(1<=T<=105)。随后的T行中,每行为一组测试数据,为一种形式表示的单元格坐标。保证所有的坐标都是正确的,且所有行列坐标值均不超过106。

样例输入

2

R23C55

BC23

输出

对每组测试数据,单独输出一行,为单元格坐标的另一种表示形式。

样例输出

BC23

R23C55

此题比较简单,编程的时候需要注意两个bug
1.在BC23后面寻找第一个数字的时候需要注意跳出循环
2.将R后面的数字转为字母时有相应的bug
一定要注意写程序的时候26应该转换为对应的Z,52应该转换为AZ

int   column = stoi(s2);
    //输出对应的column
    //printf("row = %d,column = %d\n",
      //     row,column);
    string  currents = "";
    while(column != 0)
    {
        if(column%26 != 0)
        {
            currents = (char)('A'+column%26-1)+currents;
        }
        else
        {
            currents = 'Z'+currents;
            column = column-26;
        }
        //else后面为特殊情况,对于数字52进行的转换
        column = column/26;
    }
发布了30 篇原创文章 · 获赞 9 · 访问量 3563

猜你喜欢

转载自blog.csdn.net/znevegiveup1/article/details/104829298
今日推荐