zoukankan      html  css  js  c++  java
  • 快速幂&快速乘法

     尽管快速幂与快速乘法好像扯不上什么关系,但是东西不是很多,就一起整理到这里吧

    快速幂思想就是将ax看作x个a相乘,用now记录当前答案,然后将指数每次除以2,然后将当前答案平方,如果x的2进制最后一位为1的话,就将答案乘以现在的数。快速乘法类似,只是将a*x看作x个a相加。

    代码

      

     1 #include<cstdio>
     2  #include<iostream>
     3  using namespace std;
     4  int mi(int a,int x)
     5   {
     6      int ans=1;
     7      for(int now=a;x>=1;x>>=1,now=now*now)//a表示底数,x表示次数 
     8      {
     9          if(x&1) ans=ans*now;
    10       } 
    11       return ans;
    12  }
    13  int cheng(int a,int x)//表示a*x 
    14  {     int ans=0;
    15      for(int now=a;x>=1;now=now*2,x>>=1)
    16      {
    17          if(x&1) ans=ans+now;
    18      }
    19      return ans;
    20  }
    21  int main()
    22  {
    23      int a,x;
    24      scanf("%d%d",&a,&x);
    25      printf("快速幂 %d
    ",mi(a,x));
    26      printf("快速乘法 %d
    ",cheng(a,x));
    27      return 0;
    28  }
  • 相关阅读:
    HashSet源码分析
    Mysql的体系结构和存储引擎
    触发器
    存储过程和函数
    索引
    SpringBoot 中的日志使用
    log4j2
    Logback
    slf4j
    日志门面
  • 原文地址:https://www.cnblogs.com/wxyww/p/9275575.html
Copyright © 2011-2022 走看看