快速幂-LintCode

来源:互联网 发布:淘宝全钢左轮发令枪 编辑:程序博客网 时间:2024/06/16 08:50

计算an%b,其中a,b和n都是32位的整数。
样例
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
挑战
O(logn)

#ifndef C140_H#define C140_H#include<iostream>using namespace std;class Solution {public:    /*    * @param a, b, n: 32bit integers    * @return: An integer    */    int fastPower(int a, int b, int n) {        // write your code here        if (n == 0)            return 1 % b;        else if (n == 1)            return a%b;        else if (n < 0)            return -1;        long long int m = fastPower(a, b, n / 2);        m = (m*m) % b;        if (n % 2 == 1)            m = (m*a) % b;        return m;    }};#endif
原创粉丝点击