快速冪學習筆記

啥是快速冪

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

原理

來自學長:

我們可以把 \(b\) 分解成二進制數,其中從小到大每一個二進制位
\(b_1 ,b_2 ,...,b_{?\log b+1?}\)
根據二進制轉十進制的原理,\(b\) 的十進制表示是可以通過
\(b_1 ,b_2 ,...,b_{?\log b+1?}\) 的值在 \(O(\log n)\) 的時間內解出的。
這就啟發了我們可以用同樣的方法去算 \(a^b\)

計算\(a\)\(b\)次冪\(a^b\),如果\(a\)為偶數顯然有\(a^b=(a^{\frac{b}{2}})^2\),也就是說我們僅需要計算其\(b/2\)冪,然后平方即可,如果n為奇數可以寫成\(a^b=a\times (a^{\frac{b-1}{2}})^2\),該方法可以迭代的進行,大大降低了計算所需的時間。

由于算出的數可能特別大,所以通常會在計算過程中對一個數取模,保證了不會爆掉,這樣的運算叫做快速冪取余運算

代碼實現

代碼實現比較簡潔,用上位運算速度還會快些,寫的時候最好都用long long來寫,不然有可能爆\(int\)

#define ll long long
ll power(ll a,ll b,ll c){ll res=1;while(b){if(b&1)//判斷二進制最后一位是否為1res=res*a%c;a=a*a%c;b>>=1;//每次除以2}return res%c;
}

轉載于:https://www.cnblogs.com/loceaner/p/10884624.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277698.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

文本處理工具sed

sed:stream Editor流編輯器,默認不編輯原文件,僅對模式空間中的數據做處理;而后,處理結束后,將模式空間打印至屏幕。語法: sed [option] AddressCommand file1 file2... option選項有&#xff1…

Mac OS X必備APP推薦之一

本篇博文要推薦一下裝機必備的APP,因為電腦的使用需求因人而異,這里我根據我的見解和長時間的使用經驗推薦一些我認為大家基本都用得到的APP,太過專業性質的我就不推薦了,當然我的推薦肯定會有疏漏和偏差的地方,還請熟…

2018-2019-2 20175235 實驗四《Android開發基礎》實驗報告

實驗目的 一、Android Studio的安裝測試 二、Activity測試 三、UI測試 四、布局測試 五、事件處理測試 一.Android Stuidio的安裝測試: 參考《Java和Android開發學習指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章: 參考http://www.cnblogs.com…

Mac OS X必備APP推薦之二

本篇接著上一篇APP推薦的博文,繼續為大家推薦Mac下好用的APP。 一、首先推薦一款DaisyDisk,磁盤分析、清理工具。前面第一篇APP推薦中,我們推薦過APP和系統垃圾清理工具——Cleanmymac,這兩個APP側重有所不同。Cleanmymac主要清理…

【編程大系】Java資源匯總

1.學習資料: 1)Spring Boot 那些事:https://www.w3cschool.cn/springboot/ 對應的 gitHub代碼: https://github.com/JeffLi1993/springboot-learning-example 2)Spring Boot基礎視頻:https://www.w3cschool…

Mac OSX使用VMware Fusion安裝windows虛擬機教程

安裝虛擬機之前,先要有兩步準備工作。第一,安裝并激活VMware Fusion,如果大家還沒有下載VMware Fusion請參照上一篇博文,APP推薦之二,下載VMware Fusion并激活。第二,下載你想要安裝的系統鏡像。因為已經裝…

利用CAGradientLayer自定義顏色漸變view

說個故事: UI設計對大家說:“我們拒絕炒現飯!"。 然后就加了一波特效。 程序員猝。 #####效果分析: 1.水波動畫。 2.背景顏色漸變。 #####實現思路: 1.水波動畫,用CGMutablePathRef和三角函數畫出波浪線,讓后利用…

【筆記】spring定時器時間配置實例

"0/10 * * * * ?" 每10秒觸發 "0 0 12 * * ?" 每天中午12點觸發 "0 15 10 ? * *" 每天上午10:15觸發 "0 15 10 * * ?" 每天上午10:15觸發 "0 15 10 * * ? *" 每天上午10:15觸發 "0 15 10 * * ? 2005" 2…

java簡介和開發環境搭建

因為本人的Java一直以來水平都不怎么樣,大一的時候只考了60分。所以在臨近畢業的時候,我選擇了重修Java,這些天正在慢慢的回顧Java,會到博客里面記錄一些Java的知識,不為有多少人來看,只希望自己有所收獲。…

第六章 函數和宏定義實驗(2)

C程序設計實驗報告 實驗項目: 1、利用復化梯形公式計算定積分 2、計算Ackerman函數 3、編寫計算x的y次冪的遞歸函數getpower(int x,int y),并在主程序中實現輸入輸出 4、編寫計算學生年齡的遞歸函數 5、編寫遞歸函數實現Ackman函數 姓名:王錦…

將控件保存為圖片

原文:將控件保存為圖片將控件保存為圖片 周銀輝 這里分別提供win form 和 wpf 兩種方式 對于.net 2.0 我們可以簡單地利用 BitBlt 函數來實現,非常簡單,代碼如下: publicstaticclassControlToImageConverter { privateconstInt32 S…

Linux基礎命令---get獲取ftp文件

get 使用lftp登錄ftp服務器之后,可以使用get指令從服務器獲取文件。 1、語法 get [-E] [-a] [-c] [-O base] rfile [-o lfile] 2、選項列表 選項 說明 -o 指定輸出文件的名字,不指定則使用原來的名字 -c 如果失敗,持續獲取 -E 獲取…

Unity3D學習筆記之二資源導入以及工程管理

本次教程,我們來建立自己的一個工程并導入模型,對模型進行處理。特別說明:這系列教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》,本博客中采用的模型和方法均來源于此。這是我瀏覽過好多教程后覺得講…

關于cocos creator換裝功能的實踐與思考

2019獨角獸企業重金招聘Python工程師標準>>> 最近在做一個基于cocos creator的微信小游戲,其中一個主要的功能是給角色進行換裝。先來說下開發環境: cocos creator1.9.3spine 在官方的文檔中只有設置皮膚的接口,實際上是存在可以部…

pl/sql查詢表數據,報錯ORA-03115:不支持的網絡數據類型或表示法

今天測試人員遇到一個問題:pl/sql查詢表數據,報錯ORA-03115:不支持的網絡數據類型或表示法 我在plsql上查詢這張表是沒有問題的,去看了那張表,發現有個字段類型是binary_double, 查資料發現這是oracle10才出…

抖店一件代發實操,干貨滿滿!

我是電商珠珠 沒有貨源的新手,在店鋪剛開始的時候可以搞無貨源模式,也就是一件代發,去搬運別人店鋪的商品到自己店鋪,再去利用信息差去賺取差價。 很多人不知道具體要怎么做,今天我就來給大家講一講。 一、入駐 入…

Unity3D學習筆記之三Prefab組件的使用

本次教程,我們來創建一個簡單的Prefab組件。教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》。說到Prefab,中文翻譯為預設體,在Unity官方的書本《Unity4.X從入門到精通》中的解釋是:可以理解為是一個…

JavaScript之閉包

不少開發人員總是搞不清匿名函數和閉包這兩個概念,因此經常混用。閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常見方式,就是在一個函數內部創建另一個函數 --《JavaScript高級程序設計》 轉載于:https://www.cnblogs.com/songsongblue/…

【躍遷之路】【522天】程序員高效學習方法論探索系列(實驗階段279-2018.07.12)...

(躍遷之路)專欄 【躍遷之路】獎勵金計劃正式開始 從2018.7.1起,【躍遷之路】獎勵金計劃正式起航,從今以后,每月1日,我會將自己個人上月收入的1%計入【躍遷之路】獎勵金池,積累到足夠金額后,將適時用于獎勵那…

迷茫在路口——致我的2014

今天是2015年一月一日,2014年已經過去了。這意味著再過六個月整,我就要大學畢業,開始為自己的未來拼搏。這一年,我過的充實且迷茫。說2014充實,是因為我從寒假結束到有一個寒假的到來,幾乎沒有怎么閑下來&a…