数学-快速幂

2020-04-06 17:54:20

问题描述:

计算an % b其中a,b和n都是32位的非负整数。

样例

例如 231 % 3 = 2

例如 1001000 % 1000 = 0

挑战

O(logn)

问题求解:

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

 

 

posted @ 2020-04-06 17:57  hyserendipity  阅读(171)  评论(0编辑  收藏  举报