import java.math.BigDecimal;
import static java.math.BigDecimal.ROUND_HALF_DOWN;
public class CalculateE {
public static void main(String[] args) {
int index = 7000;
getE(10);
while (true) {
String str = getE(index).toString();
if (str.contains("123456789")) {
System.out.println(str.indexOf("123456789"));
break;
}
index += 1000;
System.out.println("开始查找"+index+"位内是否存在");
}
}
public static BigDecimal factorial(int n) {//求阶乘
BigDecimal t = new BigDecimal(1);
BigDecimal i = new BigDecimal(2);
BigDecimal j = new BigDecimal(3);
for (int a = 0; a < n - 2; a++) {
i = i.multiply(j);
j = j.add(t);
}
return i;
}
public static BigDecimal getE(int n) {
final BigDecimal temp = new BigDecimal(1);
BigDecimal e = new BigDecimal(2);
for (int i = 2; i < n; i++) {
e = e.add(temp.divide(factorial(i), n, ROUND_HALF_DOWN));
}
return e;
}
}