http://lintcode.com/en/problem/fast-power/

c++

class Solution {
public:
    /*
     * @param a, b, n: 32bit integers
     * @return: An integer
     */
    int fastPower(int a, int b, int n) {
        long ret=pow(a,b,n);

        return (int)ret;

    }
    long pow(int a,int b,int n){
        if (a == 0) {
            return 0;
        }

         // The base case.
        if (n == 0) {
            return 1 % b;
        }

        if (n == 1) {
            return a % b;
        }


        long ret = 0;

        // (a * b) % p = (a % p * b % p) % p (3)
        ret = pow(a, b, n / 2);
        ret *= ret;

        // 这一步是为了防止溢出
        ret %= b;

        if (n % 2 == 1) {
            ret *= pow(a, b, 1);
        }

         // 执行取余操作
        ret = ret % b;

        return ret;

    }
};

results matching ""

    No results matching ""