快速幂取模法

2019-04-14 16:39发布




代码详解 long long quickmod(long long a,long long b,long long m) { long long ans = 1; while(b)//用一个循环从右到左遍历b的所有二进制位 { if(b & 1)//判断此时b[i]的二进制位是否为1 { ans = (ans * a) % m;//乘到结果上 b--;//把该为变0 } b /= 2;//每次取出b的二进制的下一位, a = a * a % m; } return ans; }

long long quickmod(long long a,long long b,long long m) { long long ans = 1; while(b)//用一个循环从右到左遍历b的所有二进制位 { if(b & 1)//判断此时b[i]的二进制位是否为1 ans = (ans * a) % m;//乘到结果上 b /= 2;//每次取出b的二进制的下一位,上一个代码-1再除以2和直接除以2效果一样 a = a * a % m; } return ans; }