找到a b的余数的函数,其中a,b是正整数

时间:2014-09-12 12:37:01

标签: java algorithm

我使用下面的代码解决了这个问题但是我在下面的行中得到了一个N​​ullPointerException     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));
    }

}

}

1 个答案:

答案 0 :(得分:4)

您的PrintWriter pwnull。你没有在任何地方初始化它。

e.g。 pw = new PrintWriter( System.out );

打印标准输出的内容。