Java 函数查找a^b的余数,其中a、b是正整数
我用下面的代码解决了这个问题,但我在下面的一行中得到了一个NullPointerException println(fastMod(a,b,biginger.TEN)) 我在返回一个大整数值时得到NullPointerException。 请建议并帮助我。谢谢Java 函数查找a^b的余数,其中a、b是正整数,java,algorithm,Java,Algorithm,我用下面的代码解决了这个问题,但我在下面的一行中得到了一个NullPointerException println(fastMod(a,b,biginger.TEN)) 我在返回一个大整数值时得到NullPointerException。 请建议并帮助我。谢谢 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class ModularExponential {
static StringTokenizer st;
static BufferedReader br;
static PrintWriter pw;
private static BigInteger fastMod(BigInteger base, BigInteger exponent,BigInteger modulo) {
BigInteger result = BigInteger.ONE;
while (BigInteger.ZERO.compareTo(exponent) > 0) {
if (exponent.testBit(0))
result = (result.multiply(base)).mod(modulo);
exponent = exponent.shiftRight(1);
base = (base.multiply(base)).mod(modulo);
}
return result.mod(modulo);
}
public static String next() throws IOException{
while(! st.hasMoreTokens())
st = new StringTokenizer(br.readLine());
return st.nextToken();
}
public static void main(String[] args) throws IOException{
st = new StringTokenizer("");
BigInteger a,b;
br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
while(T-- > 0) {
a = new BigInteger(next());
b = new BigInteger(next());
pw.println(fastMod(a,b,BigInteger.TEN));
}
}
}
您的
PrintWriter pw
为null
。您没有在任何地方初始化它
e、 g.pw=新的PrintWriter(System.out)代码>
打印标准输出上的内容。您的PrintWriter pw
为null
。您没有在任何地方初始化它
e、 g.pw=新的PrintWriter(System.out)代码>
打印标准输出上的内容。类似于pw=新的PrintWriter(…)代码>丢失。将pw
更改为System.out
进行测试。顺便说一下,我认为内置的modPow函数与您的fastMod函数的功能相同。类似于pw=new PrintWriter(…)代码>丢失。将pw
更改为System.out
进行测试。顺便说一下,我认为内置的modPow函数与您的fastMod函数的功能相同。