Skip to content

Commit cb237ef

Browse files
committed
adjusted binomial
1 parent 509ced8 commit cb237ef

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

java/combinatorics/BinomialCoefficients.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,13 @@ public static int factorial2(int n, int p) {
4747
return res % p;
4848
}
4949

50-
public static int binomial(int n, int m, int mod) {
51-
m = Math.min(m, n - m);
52-
long res = 1;
53-
for (int i = n - m + 1; i <= n; i++)
54-
res = res * i % mod;
55-
return (int) (res * BigInteger.valueOf(factorial(m, mod)).modInverse(BigInteger.valueOf(mod)).intValue() % mod);
50+
// fact[0] = ifact[0] = fact[1] = ifact[1] = inv[1] = 1;
51+
// for (int i = 2; i < fact.length; i++)
52+
// fact[i] = (int)c((long) fact[i - 1] * i % mod);
53+
// inv[i] = (int) ((long) (p - p / i) * inv[p % i] % p);
54+
// ifact[i] = (int)c((long) ifact[i - 1] * inv[i] % mod);
55+
public static int binomial(int n, int m, int[] fact, int[] ifact, int mod) {
56+
return (int) ((long) fact[n] * ifact[m] % mod * ifact[n - m] % mod);
5657
}
5758

5859
// Usage example

java/numbertheory/Euclid.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public static int[] generateInverses(int p) {
7575
int[] res = new int[p];
7676
res[1] = 1;
7777
for (int i = 2; i < p; ++i)
78-
res[i] = (p - (p / i) * res[p % i] % p) % p;
78+
res[i] = (int) ((long) (p - p / i) * res[p % i] % p);
7979
return res;
8080
}
8181

0 commit comments

Comments
 (0)