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

快速幂&快速乘法

时间:2018-07-06 22:25:27      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:code   name   快速乘   就是   ace   思想   can   乘法   amp   

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

快速幂思想就是将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\n",mi(a,x));
26      printf("快速乘法 %d\n",cheng(a,x));
27      return 0;
28  }

 

快速幂&快速乘法

标签:code   name   快速乘   就是   ace   思想   can   乘法   amp   

原文地址:https://www.cnblogs.com/wxyww/p/9275575.html

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