没有0的进制

Excel表列名称
基本思路
题目要求按照规则进行进制转换,该进制虽然为26进制,但是没有0,即其每个数的范围是[1,26]。
假设现有字符序列an1...a1a0,其对应的十进制数字为num。那么我们有:

num=i=0n1ai26i

由于a0的系数为1,故原式等价为:

num=a0+i=1n1ai26i

即:

num1=a01+i=1n1ai26i

此时,根据题意a0[1,26]a01[0,25],即(num1)%26=(a01),这样就可以得到a0的值。
上式两边同除以26得:

(num1)/26=i=1n1ai26i1=i=2n1ai26i1+a1

按照相同的方法我们又可以得到a1的值。
参考代码

class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        ans = list()
        while columnNumber > 0 :
            columnNumber -= 1
            ans.append(chr(columnNumber % 26 + ord('A')))
            columnNumber //= 26
        return "".join(ans[::-1])
posted @   何太狼  阅读(235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示