在腾讯的一次笔试中,要求对分数取模 4/3 对1000000007 取余结果是333333337
1. 利用费马小定理
# 计算 x的y次方 对mod取模 def power(x, y, mod): r = 1 while( y ): if y & 1: r = (r * x) % mod x = (x * x) % mod y >>= 1 return r x = 3 y = 2 # mod = 100000000 + 7 # 利用费马小定理求与(分母)逆元 mod = 7 inv = power(y, mod - 2, mod) # 再求x分子乘以逆元取模 ans = x * inv % mod print(ans )
程序中求的是 二分之三 (3/2) 对 7 的取模结果
2. 利用扩展欧几里得算法
# 扩展欧几里得算法(求乘法逆元) def ex_gcd(dividend, divisor):