原文章:https://blog.youkuaiyun.com/anxdada/article/details/76855632

long级:
inline ll mult_mod(ll a, ll b, ll m)
{
ll res = 0;
while(b){
if(b&1) res = (res+a)%m;
a = (a+a)%m;
b >>= 1;
}
return res;
}
O(1)级:
inline ll mult_mod(ll a, ll b, ll m)
{
ll c = a*b-(ll)((long double)a*b/m+0.5)*m;
return c<0 ? c+m : c; //就是算的a*b%m;
}
本文深入探讨了两种不同级别的乘法模运算算法:LL级和O(1)级。LL级算法通过位操作实现,适用于大数据范围内的模运算;而O(1)级算法则通过浮点数转换和四舍五入技巧,实现了常数时间复杂度的模运算。这两种算法各有优劣,LL级算法在处理特大数据时更高效,而O(1)级算法则在计算速度上占有优势。
1万+

被折叠的 条评论
为什么被折叠?



