码迷,mamicode.com
首页 > 其他好文 > 详细

倍增法&快速幂思想在解题中的应用

时间:2020-02-09 23:31:19      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:进制   type   快速幂   导出   快速   poj   二进制   return   mod   

1.(a^b)mod p POJ 1995 快速幂板子题

(附带板子)

typedef long long ll;

ll mod;

ll qp(ll a,ll b)

{

  ll ret=1,base=a;

  while(b)

  {

    if(b&1)

      ret=(ret*base)%mod;

    base=(base*base)%mod;

    b=b>>1;

  }

  return ret;

}

2.求(a*b)mod p;  (a,b为longlong 64位整数乘法)

设b的二进制表示为b=Ck*2^k+Ck-1*2^k-1+.....+C0*2^0. 其中Ci∈{0,1};

那么a*b=a*(∑i=0->k Ci*2^i)=∑(i=0 to k) (a*2^i)*Ci;

由于a*2^i=(a*2^i-1)*2,而Ci可以由b&1导出,可以进行推导。

 

倍增法&快速幂思想在解题中的应用

标签:进制   type   快速幂   导出   快速   poj   二进制   return   mod   

原文地址:https://www.cnblogs.com/little-cute-hjr/p/12289138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!