让:
int k = 99999989;
k
是素数。
给定一些(32位)int x
,我们想要计算x factorial mod k。 (x!%k)
执行此操作的一种方法如下:
int factmk(int x)
{
long long t = 1;
for (long long i = 2; i <= x; i++)
{
t *= i;
t %= k;
}
return (int)t;
};
这需要O(x)时间和O(1)空间。
在小于或等于O(logx)空间的直C中实现factmk
是否有渐近更快的方法?如果是,那是什么?如果不是,则草图证明。
答案 0 :(得分:0)