Функция для нахождения остатка a ^ b, где a, b - целые положительные числа

Я решал проблему, используя нижеприведенный код, но получаю исключение NullPointerException в строке ниже pw.println(fastMod (a, b, BigInteger.TEN));

Я получаю исключение NullPointerException, возвращая значение BigInteger. Пожалуйста, предложите и помогите мне. Благодарю.

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));
 }

}

}
1 ответ

Ваш PrintWriter pw имеет значение null. Вы не инициализировали его нигде.

например pw = new PrintWriter( System.out );

для распечатки содержимого на стандартном выходе.

licensed under cc by-sa 3.0 with attribution.