刚刚参加了腾讯2013马拉松,第二题(a^b)%c越界还是超时吧~桑不起。最后做了3/5~~
第三题见提交的和过的都好少,直接无视。现在总结总结第二题快速幂的知识吧,当时不知道。。
题目:求(m^n)%k 其中m,n的上限都是10^9,而c的值为10^9+7
解答:
//整数的快速幂 m^n % k 的快速幂: __int64 quickpow(__int64 m , __int64 n , __int64 k){ __int64 ans = 1; while(n){ if(n&1)//如果n是奇数 ans = (ans * m) % k; n = n >> 1;//位运算“右移1类似除1” m = (m * m) % k; } return ans; }
注意:m^n%k = ((m%k)^n)%k
浙公网安备 33010602011771号