【问题标题】:Modulo in Subtracting using identities使用身份进行减法取模
【发布时间】: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 中,因此我们可以尝试复制您的问题。
  • $ 是乳胶格式。
  • 如果abc 都是正数(或零,对于ab),并且您希望避免来自(a%c - b%c) % c 的负值,然后只需在减法中添加另一个c - 即(c + a%c - b%c) % c

标签: c++ mod


【解决方案1】:

是的。我猜应该是这样的

((a%c - b%c) % c + c) % c

如果a = 12b = 7c = 10 那么 (a%c - b%c)%c 会给 -5 然后添加c并再次修改它会得到5这是正确答案

【讨论】:

  • 如果abc 中的任何一个为负数,这并不总是有效。
猜你喜欢
  • 1970-01-01
  • 2013-05-30
  • 1970-01-01
  • 2010-11-07
  • 2016-10-11
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
相关资源
最近更新 更多