我正在做比赛问题。在此附上摘录-
寻找主厨以最佳方式出售自己的汽车所能获得的最大利润。由于此数字可能很大,因此请以1,000,000,007(10 ^ 9 + 7)为模进行计算。
这是否仅表示我必须找到除以1000000007所得的最终利润的其余部分?请原谅我这个简单的问题,语言不清楚。
在此情况下,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;
}
为问题分配最大利润的方式将是一个很大的数字,因此出于方便起见,您应该执行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