先上原题:
【问题描述】 小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对 应 28,AZ 对应 52,LQ 对应 329。 请问 2019 对应的字符串是什么?
【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个大写英文字符串,在提交答案时只填写这个字符串,注意全部大写,填写多 余的内容将无法得分。
题意理解:将一个数转为26进制(但是这里有坑啊,平常我们说的十进制是用0-9表示所有的正数,但是这是用1-26表示所有正数,这也就是我为什么在一个坑处想了很长时间)
题目关键点:熟练了解任意进制与任意进制之间的转换。跳过0的坑
首先说进制转换,这篇文章写的很好
公式法 任意进制转化_dujuancao11的博客-CSDN博客_进制转换公式https://blog.csdn.net/dujuancao11/article/details/1054277941,十进制往其他进制转换,利用短除法,就比如说这里的十进制的52,要转换为26进制的数字就需要52 / 26 = 2----0,把0记下来,把2继续运算2 / 26 = 0 -----2。只到这里把商算为1停止,那么这时列表中的数字为(只记录余数)[0,2]倒过来就是[2,0]也就是说十进制52的26进制数为20,由于题目规定1-26对应A-Z而并没有0的数值,这样只有把2往后退变为1,0则变为26对应就为AZ
n = 2019
while n != 0:
yu = n % 26
list1.append(yu)
n = n // 26
print(list1[::-1])
[2, 25, 17]
这个余数的结果一定要反过来。由于其中没有0,答案就好写多了对照字母表可知为:BYQ