“以1,000,000,007为模进行计算是什么意思?

问题描述 投票:1回答:2

我正在做比赛问题。在此附上摘录-

寻找主厨以最佳方式出售自己的汽车所能获得的最大利润。由于此数字可能很大,因此请以1,000,000,007(10 ^ 9 + 7)为模进行计算。

这是否仅表示我必须找到除以1000000007所得的最终利润的其余部分?请原谅我这个简单的问题,语言不清楚。

c modulo calculation
2个回答
0
投票

在此情况下,10 ^ 9 + 7表示为10 9 + 7,即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;
}

-1
投票

为问题分配最大利润的方式将是一个很大的数字,因此出于方便起见,您应该执行maxprofit modulo 10^9+7(这更像是伪代码)。

这可以通过C用以下方式完成:

#include<stdio.h>

//include your code to find maxprofit 

modifiedmaxprofit=maxprofit%((10^9)+7) //the percentage operator in C and most languages represents modulo


© www.soinside.com 2019 - 2024. All rights reserved.