之前刷题的时候做到了快速幂,一头雾水,临近竞赛,虽说和我学长比实力不咋的(称我渣渣铭),但咱们也不能就这么放弃。毕竟这也是我一个学期学习的见证哈!今天就好好的总结下快速幂的问题。
题意很简单:给你一个数x,要求计算出它的y次幂的值模p后的结果! 也就是 x^y%b
.
//通过递归去实现快速幂
int PW(int x,int y,int p){
if(!y){
return 1;
}
int res=PW(x,y/2,p)*PW(x,y/2,p)%p;
if(y&1==0){//也就是y为基数
res=res*x%p;
}
return res;
}
.
.
可以通过这个公式缩小a的值
int PowerMod(int a,int b,int c){
int res=1;
a=a%c;
while(b>0){
if(b%2==1){//当b为奇数的时候
res=res*a%c;
}
b/=2;
a=a*a%c;
}
return res;
}
.快速幂百度文库:点击打开链接