数论(一)
众所周知,数论是非常令人脱发的有趣的
1.快速幂
概要:
如果让你去计算2100,可能你会想到用
power(2,100);
很好,这没问题;但如果要计算21000000,用power就显得很慢了.可能你会说:“那我用快读快输,把时间捞回来不就可以了?”
但事实上,快读能够挽回的时间复杂度很少,就好像一个穷鬼。我们从来不刮穷鬼的钱,谁有钱挣谁的(赶紧申遗)
所以我们要手写power去挣他的钱
已知xa=xb * xc(a=b+c)
所以对于21000000就可以变成4500000
每次将指数除2,且任意数都有唯一的二进制分解,最终就得到了这个等式 x n = x 2 i + . . . + 2 j x^n=x^{2^i+...+2^j} xn=x2i+...+2j
如573=564 * 58 * 5
代码实现:
int qpow(int a