/*a*b (mod m) 的实现过程*/
/*当a,b很大的时候mod m就会产生溢出, 故运用乘法原理转换为加法求解*/
LL multi(LL a, LL b, LL m)
{
LL exp = a %m, res = 0;
while (b)
{
if (b & 1) //b的最低位是否为1
{
res = res + exp;
if (res >= m)
res = res -m;
}
exp = exp *2;
if (exp > m)
exp = exp - m;
b >>= 1; //将b除以2
}
return res;
}
相关文章
- 10-07【操作系统习题】三个并发进程 R、M、P 共享一个可循环使用的缓冲区 B
- 10-07【Scheme】cons的过程性实现
- 10-07零基础学习Kmeans聚类算法的原理与实现过程
- 10-07实现TOLock过程中的一处多线程bug
- 10-07【SpringBoot2 从0开始】实现自动配置的过程
- 10-07JS高级---递归案例---递归实现: 求n个数字的和,执行过程理解
- 10-07实现一个方法,找出数组中第k大的和第m大的数字相加之和
- 10-07Spark Graphx Pregel(pregel参数详解,pregel调用实现过程的详细解释)
- 10-07django 一种动态查询的便捷实现过程
- 10-07vue 中 使用 vedio.js 实现播放m3u8格式的视频