一次看懂进制转换(阶乘是关键) - HDU 2031

本文介绍了如何进行十进制与任意R进制之间的转换,通过阶乘公式阐述了转换原理,并提供了从十进制转换为R进制的具体步骤。此外,还提及了M进制到N进制转换的一种方法,但未展开详细讨论。文中给出了ACM算法题的背景,适合对算法和进制转换感兴趣的读者。
摘要由CSDN通过智能技术生成

        说起进制转换,最常见的莫过于十进制与二进制的转换操作,因为经常要进行位运算,位运算性能一般都会优于整数运算,对于追求性能的童鞋不可谓不争之地。

        对于二进制的转换,我们通常有这样的公式,例如对于一个二进制111001,转换为十进制\(x\):

$$x = 1\times2^5+1\times2^4+1\times2^3+0\times2^2+0\times2^1+1\times2^0 $$

        事实上,对于任意R进制ABCDEF,转换为十进制\(x\),我们可以写成如下形式:

$$x = A\times R^5+B\times R^4+C\times R^3+D\times R^2+E\times R^1+F\times R^0 $$

        那么反过来,对于一个十进制的\(x\),如果求得\(R\)进制的数呢。

        由上述公式,我们不难可以得出一个推导式:

        \(F = x \% R\)

        \(E = (x - F) / R \% R\)

        依次倒退,直到求得A。

        每次求一个字母(如F、E、D、C、B、A),都是减去取模的值,然后除以R,再对R取模。

        思路往往不难寻找,再复杂的问题,只要一点点抽丝剥茧,最后也会变得易于理解。

       进制转换问题还有一个从M进制转换为N进制的问题,这个问题可以用10进制作为中间转换,也有一种称之为短除法的做法,本篇不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值