0
假设我被要求查找前1000个数的阶乘,并将它们存储在一个大小为1000的数组中,即 array [0] = 1,array [1] = 1! = 1,...,数组[6] = 6! = 720等等。 但是不要超过数据大小,我已经提供了模块值mod。 现在,这就是我正在做的。两个数字相乘而不跨越数据类型大小限制?
i = 1;
array[0] = 1;
while(i <= 1000)
{
array[i] = (i*array[i - 1])%mod;++i;
}
我面临的问题是在特定点的值(i *阵列[I - 1])%MOD变为0,并从那里所有的阶乘值高达1000得到0值。 示例 - 对于mod值3414
array[568] = 2844
array[569] = 0
array[570] = 0
array[571] = 0
等等。 请帮助我,我该怎么做才能避免这种不幸的事情。我不知道这是对还是错。就像如果我必须在另一个数学公式中使用阶乘一样,那么它将不加任何或乘以0(以情况为准)。可以接受吗?如果不是,那么可以做什么。
您可以编辑以包含您认为对此结果不幸的内容吗? (提示:3414的因素是什么?) – DSM 2015-02-10 22:00:05
@DSM根据需要编辑。 – 2015-02-10 22:07:33
我会建议你在纸上写出你认为'array [569]'应该是什么的。 – Teepeemm 2015-02-10 22:42:06