为什么在Fast Power问题中输出为负?

时间:2019-04-02 21:56:57

标签: java

计算a n %b,其中abn都是32位正整数。

示例
对于2 31 %3 = 2

对于100 1000 %1000 = 0
时间复杂度为O(logn)

我正在使用递归方法来解决此问题,但我不知道为什么输出为-54791,因为可以通过某些测试。同样对于递归返回值,我也不知道应该放在哪里。

当我提交时:

Wrong Answer

47% test cases passedTotal runtime 2375 ms

Input

a = 11
b = 123898
n = 12345

Output
-54791

Expected
78433
public class Solution {
    /**
     * @param a: A 32bit integer
     * @param b: A 32bit integer
     * @param n: A 32bit integer
     * @return: An integer
     */

    int res = 1;
    public int fastPower(int a, int b, int n) {
        // write your code here

        if(n == 0){
            if(b == 1){
                return 0;
            }
            return res % b;
        }
        if(n % 2 == 0){
            int temp = fastPower(a, b, n/2);
            res =  temp * temp;

        }else{
            int temp = fastPower(a, b, n/2);
            res =  temp * temp * a;

        }

        return res % b;
    }

    //return fastPower(a,b,n) % b;

}

1 个答案:

答案 0 :(得分:0)

  

战俘(n)模组(b):

flush()
  

用法:

myFile.println("Hello World");
myFile.flush();
myFile.close();