一道 Excel 列号题,帮你彻底掌握「进制思维」
能做出来,但说不清为什么。
我这是推导出来的,还是“试出来的”?
一、从你熟悉的二进制开始
进制展开(Radix Expansion)
二、你在这道题里其实做了同一件事
26 进制展开
三、问题出在哪?
这个“26进制”不是标准进制
四、标准进制 vs Excel 进制
它没有 0!
五、关键一招:把“非标准问题”变成“标准问题”
坐标平移(offset)
标准 26 进制展开
六、这类进制有一个正式名字
Bijective Numeration(双射进制)
Bijective Base-26(无0的26进制)
七、完整算法(理论表达)
while (n > 0) {n--; // 核心:偏移int digit = n % 26; // 当前位char c = 'A' + digit; // 映射字符sb.append(c);n /= 26; // 进入下一轮}return sb.reverse().toString();
八、复杂度分析
九、从“会做题”到“会建模”
能写出来,但感觉是“试的”
建模 → 验证 → 修正
十、这类题的统一套路(重点)
十一、真实应用场景
十二、一句话总结
当你发现“进制不从 0 开始”时,本质问题就变成:先做偏移,再用标准进制解决。
能不能把“经验”升级为“模型”
夜雨聆风