我已经在java中为modPow()
尝试了BigInteger
函数
但它需要太长时间。
我知道模乘法,甚至取幂也是指数。
但由于约束,我无法解决这个问题。
a
,b
的值可以包含1000000
个数字(如此巨大,是不是)?
现在我想找(a**b)%c
。
作为第一步,我们可以a = a % c
。
但在这里,即使b
也是如此巨大。
c = 10^9+7
答案 0 :(得分:0)
尝试使用此功能。它使用一些JS引擎来计算任何东西。 将表达式作为String参数并运行它。
private void calculateExpression(String exp){
try {
//calling a JS engine which helps us to calculate what we need
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
Object result = engine.eval(exp);
//checking if we got any error
if (result.toString().equals("Infinity") || result.toString().equals("NaN")){
System.out.println("Can't divide with zero");
}
else if (result != null){
Double doubleResult = new Double("" + result);
//checking if the result is an int value
if ((doubleResult == Math.floor(doubleResult)) && !Double.isInfinite(doubleResult)) {
text.setText("" + (doubleResult.longValue()));
}
else {
//means that it's double value
text.setText(result.toString());
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}