ACM数论
coding进阶
清华,互联网大厂和量化投资
展开
-
最小公倍数(LCM)和最大公约数(GCD)
lcm(a, b) = (a*b)/gcd(a,b) (证明可以根据数论里的“每个数都可以表示成素因子的乘积”)gcd(a,b)可用欧几里得算法求解,但在用上面公式计算lcm(a,b)的时候,a*b有可能会溢出,所以要定义合适的类型,以免溢出。另外,对于求解多个数的最小公倍数或最大公约数,有如下公式可以参考:(证明可以根据数论里的“每个数都可以表示成素因子的乘积”得到)lc原创 2013-03-23 13:47:19 · 1784 阅读 · 0 评论 -
快速幂模运算
经常碰到要求(a^b )%c的题目,这个时候a,b,c一般都在int范围内,但是a^b可能就超出int表示的范围了。这个时候要快速求解(a^b )%c可以采用快速幂模运算,基本原理如下: (a*b)modc=(amodc*bmodc)modc(a*b)modc=(amodc*b)modc(a*b)modc=(a*bmodc)modc所以可以用递归来实现快速幂原创 2013-03-23 15:57:04 · 1237 阅读 · 0 评论