C++取余数问题

a*b%m(a<m&&b<m)但是a*b越界怎么才能算a*b%m的正确值a和b已经是longlong... a*b%m (a<m&&b<m)
但是a*b越界 怎么才能算a*b%m的正确值 a和b已经是long long
展开
 我来答
猫猫一号脑
2013-03-13 · TA获得超过2739个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:526万
展开全部
取余运算的规则
(a*b)%m === ((a%m) * (b%m))%m
加减乘都适用于这个公式
更多追问追答
追问
这个不行的吧  已经给了(a<m&&b<m)的条件  但是a*b会大于long  long的最大值  请问有什么办法可以快速的算 (a*b)%m
追答
你可以模拟大整数运算,将a和b砍成两半,两半32位(假设你long long是64位)
a = A1*2^32 + A2
b = B1*2^32 + B2

a * b = (A1*2^32 + A2) * (B1*2^32 + B2)
然后就按照上面我说的公式去套吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式