快速冪演算法的概念
快速冪的時間複雜度
快速冪演算法的**
int
qpow
(int a,
int b)
//首先輸入兩個值,表示所要運算的a^b
return ans;
//得到結果
}
好像有點難以理解 ,再來舉個栗子
例如求2的100次方
如果不用快速冪的話,程式迴圈與相乘都需要執行100次,但快速冪只需要迴圈七次,相乘三次
首先輸入a(2),b(100),開始運算,此時b(100)!=0,進入迴圈
b&1這裡好像需要說明一下
運用了按位與運算子(&)100的二進位制數為1100100,當二進位制末尾位置上為0時不進行運算,當二進位制末尾位置上為1時進行運算(這就是為什麼每次迴圈都要讓b右移一位了,因為要二進位制的每一位究竟是0還是1)
但為什麼為0時相乘,為1時不乘呢?
因為快速冪是指將所求的次方數分解
例如100的二進位制數為1100100,那就說明100可以由4+32+64構成,2的100次方就可以計算為 2100 = 2(4+32+64) = 24 *232 * 264
這樣計算就可以大大減少迴圈與相乘運算的次數了
第一周任務點評
對於本週的助教工作表示愧疚,因為這週的工作導致了我沒有精力去完成助教的工作,儘管只是一點點時間都不願意抽出來去點評,一來是我認為在我疲憊的時候沒有專注的精神去為學生們進行走心的點評,二來是我的時間不知不覺中變得少了很多,可能有一兩分鐘零散的時間去看部落格,但是我怕我下一次的一兩分鐘忘記上一次的一兩分...
第一周任務匯報 星期一
一 在windows以及linux環境下搭建python程式設計環境 1.linux環境下搭建python程式設計環境 我先裝了乙個ubuntu 以前的好像被刪了,打不開,好在之前的光碟映像檔案還在 下面開始搭python。1 檢查python版本 2 安裝文字編輯器 3 執行hello world...
第一周任務匯報 星期六
web開發方向是python語言流行的乙個重要方向,主要用於伺服器後端開發。根據python web開發框架的複雜程度,將要學到一些python第三方生態庫 django pyramid flask。今天學習django。django是python生態中最流行的開源web應用框架。其開發理念是dry...