快速幂算法

最小公倍数=a*b/最大公约数;

描述:求a的b次方模c后的值

算法:

公式1:amod c = (a mod c)mod c;// b次方

公式2:

算法实现:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int quickMod(int a, int b, int c) {
    int ans = 1;
    a = a % c;
    while(b > 0) {
        if(b % 2 == 1)    //如果b是奇数,a最后还要乘一次 
            ans = (ans * a) % c;    
        b = b/2;    //b取一半 
        a = (a * a) % c;    //a平方,模c可以减少计算量 
    }
    return ans;
}
int main() {
    int a, b;
    while(cin >> a >> b) {
        cout << quickMod(a, b, 10) << endl;
    }
    return 0;
}

 

posted @ 2016-09-11 14:30  曹某某的博客  阅读(291)  评论(0)    收藏  举报