起源
最近看到了一个二进制转十进制问题
(111111)2⇒十进制(111111)_2 \\Rightarrow 十进制(111111)2⇒十进制 ⇓\\huge\\Downarrow⇓ 20+21+22+23+24+252^0+2^1+2^2+2^3+2^4+2^520+21+22+23+24+25
又看到了数学题
已知log2x为整数,求方程x0+x1+x2+x3+x4+x5=37449的解已知log_2x为整数,求方程 x^0+x^1+x^2+x^3+x^4+x^5=37449 的解 已知log2x为整数,求方程x0+x1+x2+x3+x4+x5=37449的解
传统方法
先判断x>0:x>0:x>0:左边每一项都是非负数,和为正数,x负数时交替正负,很难得到大正数 37449,优先试正整数。
从小整数代入试探:
x=1:1+1+1+1+1+1=6≠37449x=1:1+1+1+1+1+1=6\\neq37449x=1:1+1+1+1+1+1=6=37449
x=2:1+2+4+8+16+32=63x=2:1+2+4+8+16+32=63x=2:1+2+4+8+16+32=63
x=3:1+3+9+27+81+243=364x=3:1+3+9+27+81+243=364x=3:1+3+9+27+81+243=364
x=4:1+4+16+64+256+1024=1365x=4:1+4+16+64+256+1024=1365x=4:1+4+16+64+256+1024=1365
x=5:1+5+25+125+625+3125=3936x=5:1+5+25+125+625+3125=3936x=5:1+5+25+125+625+3125=3936
x=6:1+6+36+216+1296+7776=9331x=6:1+6+36+216+1296+7776=9331x=6:1+6+36+216+1296+7776=9331
x=7:1+7+49+343+2401+16807=19608x=7:1+7+49+343+2401+16807=19608x=7:1+7+49+343+2401+16807=19608
x=8:1+8+64+512+4096+32768=37449x=8:1+8+64+512+4096+32768=37449x=8:1+8+64+512+4096+32768=37449
刚好等于右边,得整数解 x=8x=8x=8 。
可以看出,这个方法简直就是简直就是拉完了(烂爆了)。
新方法与其原理
于是我深受二进制转十进制的启发。
log2xlog_2xlog2x 为整数说明 xxx 是222 的平方数,因此我们可以把左边视为一个 xxx 进制数 (111111)x(111111)_x(111111)x((111111)x=x0+x1+x2+x3+x4+x5(111111)_x=x^0+x^1+x^2+x^3+x^4+x^5(111111)x=x0+x1+x2+x3+x4+x5 见权位累加法),然后再将右边转成二进制,即 (37449)10=(1001001001001001)2,(见短除法)(37449)_{10} = (1001001001001001)_{2} ,_{(见短除法)}(37449)10=(1001001001001001)2,(见短除法)
也就是 (111111)x=(1001001001001001)2(111111)_x = (1001001001001001)_{2}(111111)x=(1001001001001001)2
那么由权位累加法可以看出,最后一位的1,分别代表 1×x01\\times x^01×x0 和 1×201\\times 2^01×20 ,即 111 和 111 。因此这一位并无差别。
再看倒数第二个 111 ,分别代表 x1x^1x1 和 232^323 ,并且后续规律也非常统一(即两个零和一个一循环)。所以就可以得出 x1=23x^1=2^3x1=23 即:x=8即:x=8即:x=8并且这种规律性是 xxx 为 222 的平方数所导致的必然结果。
总结一下我们的解题流程
已知log2x为整数,求方程x0+x1+x2+x3+x4+x5=37449的解已知log_2x为整数,求方程 x^0+x^1+x^2+x^3+x^4+x^5=37449 的解 已知log2x为整数,求方程x0+x1+x2+x3+x4+x5=37449的解
解:(111111)x=(1001001001001001)2解:(111111)_x=(1001001001001001)_2解:(111111)x=(1001001001001001)2
由log2x为整数可得x可以表示为2k(k为整数)由log_2x为整数可得x可以表示为2^k (k为整数)由log2x为整数可得x可以表示为2k(k为整数)
得:x=23=8得:x=2^3=8得:x=23=8
三步搞定,就问简不简单,数学本来就尊崇简洁之美,按简洁定义,这个方法简直美到了极致。不过,更惊艳的还在后面。
简化与改进
没错,还能简化,如果遇到了一个很大的数字,转二进制实在是麻烦至极。因此,我们再进行一下优化。
由于 因 xxx 是 222 的平方数导致的规律性。我们其实用不到这整个二进制数。比如刚才的过程,只用到了倒数第二个一,而我们转二进制也是从后往前的,因此,我们可以再转二进制时只要看到第二个1时就停止转换过程。
那么,刚才的过程就可以优化为:
已知log2x为整数,求方程x0+x1+x2+x3+x4+x5=37449的解已知log_2x为整数,求方程 x^0+x^1+x^2+x^3+x^4+x^5=37449 的解 已知log2x为整数,求方程x0+x1+x2+x3+x4+x5=37449的解
解:(111111)x=(…1001)2解:(111111)_x=(…1001)_2解:(111111)x=(…1001)2
由log2x为整数可得x可以表示为2k(k为整数)由log_2x为整数可得x可以表示为2^k (k为整数)由log2x为整数可得x可以表示为2k(k为整数)
得:x=23=8得:x=2^3=8得:x=23=8
是不是看着舒服太多了,如果把数字换大一点,还能使差距更明显。
例如:
已知log2x为整数,求方程x0+x1+x2+x3+…+x10=1171221845949812801的解已知log_2x为整数,求方程 x^0+x^1+x^2+x^3+…+x^{10}= 1171221845949812801 的解已知log2x为整数,求方程x0+x1+x2+x3+…+x10=1171221845949812801的解
如果用优化之前的方法来做这道题,就要:
已知log2x为整数,求方程x0+x1+x2+x3+…+x10=1171221845949812801的解已知log_2x为整数,求方程 x^0+x^1+x^2+x^3+…+x^{10}= 1171221845949812801 的解已知log2x为整数,求方程x0+x1+x2+x3+…+x10=1171221845949812801的解
解:(11111111111)x=(1000001000001000001000001000001000001000001000001000001000001)2解:(11111111111)_x=(1000001000001000001000001000001000001000001000001000001000001)_2解:(11111111111)x=(1000001000001000001000001000001000001000001000001000001000001)2
由log2x为整数可得x可以表示为2k(k为整数)由log_2x为整数可得x可以表示为2^k (k为整数)由log2x为整数可得x可以表示为2k(k为整数)
得:x=26=64得:x=2^6=64得:x=26=64
这个二进制数字是不是看的令人头皮发麻,而且其主要问题在于计算量太大。现在用优化方法写一下
已知log2x为整数,求方程x0+x1+x2+x3+…+x10=1171221845949812801的解已知log_2x为整数,求方程 x^0+x^1+x^2+x^3+…+x^{10}=
1171221845949812801 的解已知log2x为整数,求方程x0+x1+x2+x3+…+x10=1171221845949812801的解
解:(11…11)x=(…1000001)2解:(11…11)_x=(…1000001)_2解:(11…11)x=(…1000001)2
由log2x为整数可得x可以表示为2k(k为整数)由log_2x为整数可得x可以表示为2^k (k为整数)由log2x为整数可得x可以表示为2k(k为整数)
得:x=26=64得:x=2^6=64得:x=26=64
不难看出其运算量降低到了原方法的 110\\dfrac{1}{10}101 以下。
结语
现代教学主要注重传统方式与课本内容,若在作业本上使用此方法,较为死板的老师们大概率会给你打上一个亮眼的叉叉。所以,请慎重使用。
本文到这里就结束了,感谢大家的浏览。

