【问题标题】:obtaining two large numbers and reducing their difference by taking their mod values iteratively in C通过在 C 中迭代地获取它们的 mod 值来获得两个大数并减少它们的差异
【发布时间】:2015-10-21 19:09:13
【问题描述】:

好吧,假设我应该获得 D = (A - B) mod M,其中 A 和 B 非常大,如 in 一样大,long long 不会有帮助。 A 和 B 是迭代且独立地获得的,我将在每次迭代中获得 A mod M,在每次迭代中获得 B mod M。现在,假设B总是小于A,但是(B mod M)可以大于(A mod M),那么在评估D时,会得到一个负数,这是不对的,因为,B比 A 小。我该怎么做?提前谢谢。

【问题讨论】:

标签: c algorithm math modulus


【解决方案1】:

如果((A mod M) - (B mod M)) mod M 给你一个否定的结果(因为它可能,因为当任何一个参数为负时,旧的 C 留下模数实现定义的结果,而 C99 定义它以便如果被除数为负则结果为负) ,只需添加M 即可获得您想要的结果。毕竟 x 和 x+M 是等价的,mod M。

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2018-03-31
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多