快速幂取模

来源:互联网 发布:手机淘宝7.1.1版本 编辑:程序博客网 时间:2024/04/28 14:25

  快速幂取模问题也是经常遇到的问题,其实它不过是用到了二分的思想,逐渐除2的过程。这也算是一个基础的工具,聪明的你一定会非常容易的理解它,对不对?而且我相信你也一定会勤劳的将他作为模板记下的!

给出三个数啊,a,b,c,让你求出a^b%c;的值。

代码:

#include <iostream>


using namespace std;
long long quickpow(long long x,long long n,long long z)
{
    long long res = 1;
    while(n>0)
    {
        if(n & 1) res = ((res%z)*(x%z))%z ;
        x = ((x%z)*(x%z))%z ;
        n=n >>1;
    }
    return res;
}
int main()
{
    long x,y,k,z,n;
    while(cin>>x>>y>>z)
    {
        k=quickpow(x,y,z);
        cout<<k<<endl;
    }
}

其中&与>>是位移运算符(相关知识就不多介绍了了,详情请看)

1 0