hdu1061(2015-N1):1.快速幂;2.找规律

Posted 林木子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1061(2015-N1):1.快速幂;2.找规律相关的知识,希望对你有一定的参考价值。

1.快速幂

原理:求a的b次方,将b转化为二进制数,该二进制位第i位的权是2^(i-1),

例如
技术分享图片
11的二进制是1011
11 = 23×1 + 22×0 + 21×1 + 2o×1
因此,我们将a11转化为算
 技术分享图片
实现
快速幂可以用位运算来实现
and 1{也就是取b的二进制最低位(即第0位) 判断b是否为奇数,是则为1}
shr 1{就是去掉b的二进制最低位(即第0位)}
C++实现为
b & 1//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶
b>>1//把b的二进制右移一位,即去掉其二进制位的最低位.
递归版:
ll pow(ll a,ll i){
  if (i==0) return 1;
  int temp=pow(a,i>>1);
  temp=temp*temp%MOD;
  if (i&1) temp=(ll)temp*a%MOD;
  return temp%MOD;
}
非递归版:
ll f(ll a,ll b,ll n){
  int t,y;
  t=1; y=a;
  while (b!=0){
    if (b&1==1) t=t*y%n;
    y=y*y%n; b=b>>1;
  }
  return t;
 

以上是关于hdu1061(2015-N1):1.快速幂;2.找规律的主要内容,如果未能解决你的问题,请参考以下文章

HDU-1061-Rightmost Digit (快速幂模板)

hdu 1061Rightmost Digit(水题 快速幂 分治)

hdu1061Rightmost Digit(快速幂取余)

快速幂 HDU-1021 Fibonacci Again , HDU-1061 Rightmost Digit , HDU-2674 N!Again

hdu 1061 Rightmost Digit

poj1061