快速幂取模问题也是经常遇到的问题,其实它不过是用到了二分的思想,逐渐除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;
}
}
其中&与>>是位移运算符(相关知识就不多介绍了了,详情请看)