【发布时间】:2018-05-28 16:03:58
【问题描述】:
在各种模恒等式中,减法恒等式表明:
(a - b) % c = (a % c - b % c) % c
但是如果我看一下a = 508, b = 201 and c = 101 的这个例子,我使用身份得到的答案是否定的,这是不正确的。我在 c++ 中的程序使用大量数字的阶乘(不是从 1 开始,而是从用户给定的输入到另一个数字)模 10^9 + 7 减去另一个阶乘数字(小于第一个值) mod 10^9 + 7 但我得到负值, 或在使用 unsigned long long 时溢出。
是否有任何可能的实现来获得正确的输出?
【问题讨论】:
-
$代表什么功能? -
在互联网上搜索“StackOverflow C++ mod large numbers”。
-
显示一些小示例代码来说明您的问题。 以文本形式发布,没有屏幕快照。屏幕快照很难粘贴到 IDE 中,因此我们可以尝试复制您的问题。
-
$ 是乳胶格式。
-
如果
a、b和c都是正数(或零,对于a和b),并且您希望避免来自(a%c - b%c) % c的负值,然后只需在减法中添加另一个c- 即(c + a%c - b%c) % c。