我使用下面的代码解决了这个问题但是我在下面的行中得到了一个NullPointerException pw.println(fastMod(A,B,BigInteger.TEN));
我在返回BigInteger值时收到NullPointerException。 请建议并帮助我。感谢。
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));
}
}
}
答案 0 :(得分:4)
您的PrintWriter pw
是null
。你没有在任何地方初始化它。
e.g。 pw = new PrintWriter( System.out );
打印标准输出的内容。