漫谈进位制:两步确定多项式的各项系数
数的表示与其采用的进制密不可分,利用这个性质无疑可以帮助你解决许多原本棘手的问题。
一、两步确定多项式的各项系数
黑匣子里有一个关于 \(x\) 的多项式 \(P(x)\) ,其项数未知,但各项的系数都是正整数。如果给黑匣子输入一个数 \(z\),黑匣子将返回多项式 \(P(z)\) 的值。
试问:如何在两步之内还原出整个多项式?
- 输入 \(1\) ,于是便得到整个多项式的所有系数之和。不妨把和记作 \(s\);
- 输入 \(s + 1\) ,于是黑匣子返回 \(a_n * (s + 1)^n + a_{n-1} * (s + 1)^{n-1} + … + a_1 * (s + 1) + a_0\);
- 把该值转换成 \(s + 1\) 进制,依次读出每一位上的数,它们就是多项式的各项系数了。
二、举一反三
上述示例其实也说明,学习知识不能墨守成规,应当融汇贯通。很多人学习二进制、八进制与十六进制的时候根本不会深入思考。其实有时从进制的角度去看待问题,也许能发现一个不同的世界。
1、多项式的乘法
譬如 \((x+a)(x+b)\) 可以看作 \(x\) 进制的乘法,也就是 \(1a \times 1b\) ,仿照十进制乘法的计算规则可以得到:
\begin{matrix}&&1&a \\ \times&&1&b\\\hline &&b\times 1&b\times a\\ +&1\times 1&1\times a&\\\hline &1&a+b&ab\end{matrix}
将上述 \(x\) 进制的结果 \(1\,\,\,(a+b)\,\,\,ab\) 转为 10 进制(按权重展开),即为 \(1\times x^2+(a+b)\times x^1+(ab)\times x^0\)。
2、整除
大家都知道一个数是否能被 2 整除只需要看它的个位能否被 2 整除即可,可是你想过为什么吗?这是因为 10 能被 2 整除。
而看一个数能否被 3 整除只需要看各位数之和是否能被 3 整除,这又是为什么呢?因为 \(10^n-1\) 总能被 3 整除。如:2345 可以写成 \(2 \times (999+1) + 3 \times (99+1) + 4 \times (9+1) + 5\),展开就是 \(2 \times 999+3 \times 99+4 \times 9 + (2+3+4+5)\)。因此 2345 能否被 3 整除就只需要看 \((2+3+4+5)\) 能否被 3 整除了。
3、十六进制
最后举个有趣的“栗子”:你面前有 20 盏灯,每盏灯都处于亮、灭其中一种状态,请你在 1 分钟内记住所有灯的状态,请问你如何做到?
很简单,假设亮为 1,灭为 0,20 盏灯对应一个 20 位的二进制数,将其转化为 32 进制的数,仅有 4 位数,并且由于 \(2^5=32\),32 进制的每一位数都对应 5 盏灯的状态。而这正式 16 进制诞生的重要原因之一。