【发布时间】:2013-02-13 16:41:32
【问题描述】:
给定三个整数,a、b和c 和a,b <= c < INT_MAX,我需要计算(a * b) % c,但如果值太大,a * b 可能会溢出,从而给出错误的结果。
有没有办法通过 bithacks 直接计算,即不使用不会溢出相关值的类型?
【问题讨论】:
-
必须和Ivella上同一堂课:stackoverflow.com/questions/14857702/…
-
不,我只是减少我的问题,直到它们听起来像家庭作业...... Katabusa 似乎很投入,我希望我错过了一些明显的位黑客(比如链接中提到的
(a % c) * (b % c) % c,它但不适用于我的问题……) -
@MatsPetersson If a
-
Overflow: a*a mod n 的可能重复项(具体请参见此处的my answer)。这是为了平方,但可以很容易地适应任意乘法。
标签: c bit-manipulation