【问题标题】:What is meant by "compute it modulo 1,000,000,007"?“以 1,000,000,007 为模计算”是什么意思?
【发布时间】:2020-04-13 08:38:31
【问题描述】:

我正在做一个竞赛题。在此附上一段摘录 -

如果厨师以最佳方式销售他的汽车,他可以赚取的最大利润。由于这个数字可能很大,因此以 1,000,000,007 (10^9+7) 为模计算。

这是否仅仅意味着我必须找到最终利润除以 1000000007 后的余数?请原谅我这个简单的问题,语言不清楚。

【问题讨论】:

  • 是的,并确保您了解模块化操作规则。
  • 这确实引发了您是否应该计算 (max(profits))%modmax(profits%mod) 的问题。

标签: c modulo calculation


【解决方案1】:

在此评论的上下文中,10^9+7 应理解为 109+7,即@ 987654322@.

非常大的数字会超出整数类型的范围,因此要求您计算结果以 1000000007 为模,只要它们超过或等于该值,就可以通过减少中间结果以 1000000007 为模来实现,只要最终结果是通过加法和乘法获得的。 Modular Arithmetics 有更多有趣的属性。

例如,您可以这样计算阶乘以 1000000007 为模:

long factorial_mod(int n) {
    long res = 1;
    for (int i = 2; i <= n; i++) {
        res = res * (long long)i % 1000000007;
    }
    return res;
}

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 2012-08-11
    • 2015-06-11
    • 2013-11-18
    • 2015-09-18
    • 2017-03-29
    • 2011-03-16
    • 2011-07-09
    相关资源
    最近更新 更多