首页 > 其他 > 详细

快速幂学习总结

时间:2014-02-19 14:59:42      阅读:421      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
//a * b % c == (a % c) * (b % c)
//上面的是一个公式,接下来将介绍另一个公式,在介绍公式之前,先来看一个有关二进制的东西,那10进制数 11 来说  把11转为二进制1011,也就是2^3 + 2^1 + 2^0;在介绍一个初中的公式,a^(a1+a2+a3+……+an)==a^a1 * a^a2 * a^a3 *……* a^an;好有了这些预备知识,现在来讲重点
//要求 a ^ b % c 这个结果该怎么做呢? 首先将 b 拆成 二进制,然后就会出现a1+a2+a3+……+an,所以a ^ b % c == a ^ (a1 + a2 +a3+……+an) % c == a^a1 * a^a2 * a^a3 *……* a^an; 
//下面是我提供的代码;

#include <iostream>
#define MOD 100000007
using namespace std;
long long quick_mi(long long a,int b) {
    int ans = 1;
    while (b) {
        if (b % 2) ans = ans * a % MOD;
        a = a * a % MOD;
        b = b >> 1;
    }
    return ans;
}
int main (){
    int a,b;
    cin >> a >> b;
    cout << quick_mi(a,b) << endl;
}
bubuko.com,布布扣

快速幂学习总结

原文:http://www.cnblogs.com/xiaoshanshan/p/3554769.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!