forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSmallestGoodBase.java
32 lines (27 loc) · 913 Bytes
/
SmallestGoodBase.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.math.BigInteger;
public class SmallestGoodBase {
public String smallestGoodBase(String nn) {
long n = Long.parseLong(nn);
long res = 0;
for (int k = 60; k >= 2; k--) {
long s = 2, e = n;
while (s < e) {
long m = s + (e - s) / 2;
BigInteger left = BigInteger.valueOf(m);
left = left.pow(k).subtract(BigInteger.ONE);
BigInteger right = BigInteger.valueOf(n).multiply(BigInteger.valueOf(m).subtract(BigInteger.ONE));
int cmr = left.compareTo(right);
if (cmr == 0) {
res = m;
break;
} else if (cmr < 0) {
s = m + 1;
} else {
e = m;
}
}
if (res != 0) break;
}
return "" + res;
}
}