【发布时间】:2019-02-18 07:10:05
【问题描述】:
我为数字的阶乘编写了以下代码:
long int fac[max+1];
fac[0]=1;
for(int j=1;j<=max;j++)
{
fac[j]=(fac[j-1]*j)%1000000007;
}
//Printing
for(int i=0;i<T;i++)
{
cout<<fac[N[i]]<<"\n";
}
这对于 long int 非常有效,但是如果我们将数组更改为 int,我们会得到错误的答案。
请告诉我为什么当 int 的范围大于 10^9+7 时会发生这种情况。
【问题讨论】:
-
请注意
long int与 Windows 中的int相同。如果您想要有保证的 64 位类型,请使用int64_t或long long,前提是您可以接受至少 64 位的类型。