程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 快速冪,快速冪取模

快速冪,快速冪取模

編輯:C++入門知識

快速冪,快速冪取模


快速冪顧名思義,就是快速算某個數的多少次冪。其時間復雜度為 O(log₂N), 與樸素的O(N)相比效率有了極大的提高。

原理:

  以下以求a的b次方來介紹

  把b轉換成二進制數。     如: =      11的二進制是1011     11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1     因此,我們將a¹¹轉化為算  代碼比較:   常規求冪 1 int pow1(inta,intb){ 2 int ans=1; 3 while(b--) 4 ans*=a; 5 return ans; 6 } View Code

  二分求冪(一般)

1 int pow2(inta,intb){ 2 int ans=1 , temp=a; 3 while(b){ 4 if(b%2) 5 ans*=temp; 6 temp*=temp; 7 b/=2; 8 } 9 return ans; 10 } View Code

  快速求冪(位操作)

1 int pow3(inta,intb){ 2 int ans = 1 , temp = a ; 3 while(b){ 4 if(b&1) //b%2 = b&1 5 ans*=temp; 6 temp*=temp; 7 b>>=1; //b/2 = b>>1 8 } 9 return ans; 10 } View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved