亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c++入門必學(xué)算法之快速冪思想及實(shí)現(xiàn)

 更新時(shí)間:2022年11月04日 10:43:27   作者:舊林墨煙  
快速冪相較于普通的冪,具有占用空間少,效率更高等優(yōu)點(diǎn),全面碾壓普通的冪,下面這篇文章主要給大家介紹了關(guān)于c++入門必學(xué)算法之快速冪思想及實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

一、什么是快速冪

快速冪算法是用來(lái)快速計(jì)算指數(shù)表達(dá)式的值的,例如 210000000,普通的計(jì)算方法 2*2*2*2…乘10000000次,如果一個(gè)數(shù)字的計(jì)算都要計(jì)算那么多次的話,那么這個(gè)程序一定是失敗的。

學(xué)完快速冪之后就可以用幾十次計(jì)算求出答案了

二、快速冪思想及實(shí)現(xiàn)

快速冪思想其實(shí)很簡(jiǎn)單,就是公式的轉(zhuǎn)換

1、當(dāng)指數(shù)是偶數(shù)時(shí),我們可以讓指數(shù)除以2,底數(shù)乘以底數(shù)

2、當(dāng)指數(shù)是奇數(shù)時(shí),我們可以將指數(shù)變?yōu)槠鏀?shù)

例如 210

  • 指數(shù)是偶數(shù),210 = 45
  • 指數(shù)是奇數(shù),45 = 4 * 44
  • 指數(shù)是偶數(shù), 4 * 44 = 4 * 162
  • 指數(shù)是偶數(shù),4 * 162 = 4 * 2561
  • 指數(shù)是奇數(shù), 4 * 2561=4 * 256 * 2560
  • 指數(shù)為0時(shí)停止,那么答案就是計(jì)算 4 * 256 = 1024

下面代碼就是模擬這個(gè)過(guò)程:

 #include<iostream>//c++標(biāo)準(zhǔn)頭文件,可以使用cout,cin等標(biāo)準(zhǔn)庫(kù)函數(shù) 
using namespace std;//命名空間,防止重名給程序帶來(lái)各種隱患,使用cin,cout,stack,map,set,vector,queue時(shí)都要使用
long long fpow(long long a,long long b){//a是底數(shù),b是指數(shù) 
	long long ans=1;//初始化答案為1
	while(b){//當(dāng)指數(shù)不為0時(shí)執(zhí)行
		if(b%2==0){//指數(shù)為偶數(shù)時(shí),指數(shù)除以2,底數(shù)乘以2
			b/=2;
			a*=a; 
		}else{//指數(shù)為奇數(shù)時(shí),分離指數(shù),ans乘以底數(shù)
			ans*=a; 
			b--;
		}
	} 
	return ans;//ans就是答案 
}
int main(){
	long long n,m;
	cin>>n>>m;
	cout<<fpow(n,m)<<endl;
}

3、快速冪精簡(jiǎn)模板

#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;
}

總結(jié)

到此這篇關(guān)于c++入門必學(xué)算法之快速冪思想及實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)c++快速冪算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論