zoukankan      html  css  js  c++  java
  • 140. 快速幂

    140. 快速幂 

    计算a的n次幂 % b,其中a,b和n都是32位的整数。

    样例

    例如 231 % 3 = 2

    例如 1001000 % 1000 = 0

    class Solution {
    public:
        /*
         * @param a: A 32bit integer
         * @param b: A 32bit integer
         * @param n: A 32bit integer
         * @return: An integer
         */
        int fastPower(int a, int b, int n) {
            // write your code here
                /*
                 * https://baike.baidu.com/item/%E5%8F%96%E6%A8%A1%E8%BF%90%E7%AE%97
                 *  (a * b) % p = (a % p * b % p) % p
                 *  n如果是基数:((temp * temp) % b) * a % b;
                 *  n如果是偶数: temp * temp % b;
                 * */
                if (n == 0) {
                    return 1 % b;
                }
                if (n == 1) {
                    return a % b;
                }
                long long temp = fastPower(a, b, n / 2);
            
                if (n & 1) {
                    return ((temp * temp) % b) * a % b;
                } else {
                    return temp * temp % b;
                }
        }
    };
    

      

  • 相关阅读:
    spring给容器中注入组件的几种方式
    Linux多进程
    Linux多进程的应用
    Linux进程通信
    Linux信号
    Linux共享内存
    Linux信号量
    Linux多线程
    Linux线程同步
    Linux调用可执行程序
  • 原文地址:https://www.cnblogs.com/kanekiken/p/7998164.html
Copyright © 2011-2022 走看看