iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++入门必学算法之快速幂思想及实现
  • 309
分享到

c++入门必学算法之快速幂思想及实现

C++快速幂算法c++ 快速幂c++幂运算 2022-11-13 19:11:59 309人浏览 独家记忆
摘要

目录一、什么是快速幂二、快速幂思想及实现总结一、什么是快速幂 快速幂算法是用来快速计算指数表达式的值的,例如 210000000,普通的计算方法 2*2*2*2…乘10

一、什么是快速幂

快速幂算法是用来快速计算指数表达式的值的,例如 210000000,普通的计算方法 2*2*2*2…乘10000000次,如果一个数字的计算都要计算那么多次的话,那么这个程序一定是失败的。

学完快速幂之后就可以用几十次计算求出答案了

二、快速幂思想及实现

快速幂思想其实很简单,就是公式的转换

1、当指数是偶数时,我们可以让指数除以2,底数乘以底数

2、当指数是奇数时,我们可以将指数变为奇数

例如 210

  • 指数是偶数,210 = 45
  • 指数是奇数,45 = 4 * 44
  • 指数是偶数, 4 * 44 = 4 * 162
  • 指数是偶数,4 * 162 = 4 * 2561
  • 指数是奇数, 4 * 2561=4 * 256 * 2560
  • 指数为0时停止,那么答案就是计算 4 * 256 = 1024

下面代码就是模拟这个过程:

 #include<iOStream>//c++标准头文件,可以使用cout,cin等标准库函数 
using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,stack,map,set,vector,queue时都要使用
long long fpow(long long a,long long b){//a是底数,b是指数 
	long long ans=1;//初始化答案为1
	while(b){//当指数不为0时执行
		if(b%2==0){//指数为偶数时,指数除以2,底数乘以2
			b/=2;
			a*=a; 
		}else{//指数为奇数时,分离指数,ans乘以底数
			ans*=a; 
			b--;
		}
	} 
	return ans;//ans就是答案 
}
int main(){
	long long n,m;
	cin>>n>>m;
	cout<<fpow(n,m)<<endl;
}

3、快速幂精简模板

#include<iostream>
using namespace std;
long long fpow(long long a,long long b){
	long long ans=1;
	while(b){
		if(b&1)ans*=a;
		b>>=1;
		a*=a;
	} 
	return ans;
}
int main(){
	long long n,m;
	cin>>n>>m;
	cout<<fpow(n,m)<<endl;
}

总结

到此这篇关于c++入门必学算法之快速幂思想及实现的文章就介绍到这了,更多相关c++快速幂算法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: c++入门必学算法之快速幂思想及实现

本文链接: https://www.lsjlt.com/news/170752.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作