zoukankan      html  css  js  c++  java
  • 2015年杭电计算机研究生复试的笔试题目:hdu1061(2015-N1):1.快速幂;2.找规律

    1.快速幂

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

    例如
    11的二进制是1011
    11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1
    因此,我们将a¹¹转化为算
     
    实现
    快速幂可以用位运算来实现
    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;
     
    一生有所追!
  • 相关阅读:
    洛谷P1120-小木棍
    flask之注册功能
    python数据库操作-mysql数据库
    flask之数据库的交互
    flask之显示当地时间
    flask之url_for函数
    flask之Twitter Bootstrap
    flask之模板之继承
    flask之表单
    flask之jinjia2模板
  • 原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8490659.html
Copyright © 2011-2022 走看看