快速幂&快速乘法

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

快速幂思想就是将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  }

 

全部评论

相关推荐

只有一个苍穹外卖外加正在看黑马点评,可以找小厂实习吗,还有我的简历有什么大问题吗
Java抽象小篮子:感觉有点熟悉,问题1是学历,2是没实习经历,3是专业技能写得太少太少了(怎么写可以看我置顶帖),4是仅这一个项目找实习不够看。拷打完毕,简历怎么写可以看我置顶帖子
点赞 评论 收藏
分享
xwqlikepsl:感觉很厉害啊,慢慢找
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务