我要计算nCr modulo 142857
。以下是我的 Java 代码:
private static int nCr2(int n, int r) {
if (n == r || r == 0) {
return 1;
}
double l = 1;
if (n - r < r) {
r = n - r;
}
for (int i = 0; i < r; i++) {
l *= (n - i);
l /= (i + 1);
}
return (int) (l % 142857);
}
这会及时给出 nCr O(r)
。我想要一个算法在比这更短的时间内得到结果。有这样的算法吗?