題目鏈結
二分冪:13 = 1 1 0 1
所以a 13=
a8∗a
4∗a1
a^ = a^8 * a^4 * a^1
a13=a8
∗a4∗
a1認真分析一下弄懂了就不難,我也是看了很久才稍微明白點。其實很早就知道快速冪模,但是只是記住了模板沒有記住演算法的推導,過一段時間忘記了模板又不會做了。這個故事說明乙個道理:程式設計沒有捷徑。
#include
typedef
long
long ll;
ll binarypow
(ll a,ll b,ll m)
a = a * a % m;
//a始終在前面結果的基礎上平方,所以a的權值實際上是1,2,4,8等等次方
b=b >>1;
//b每次都右移一位,相當於除以2主要是轉變為b的二進位制形式
}//為什麼是右移除到0,而不是左移,因為a的1次方剛好跟b的二進位制形式的最低位對應,
//然後a的2次方 與b的次低位對應
return ans;
}int
main()
return0;
}
HDU 2035 人見人愛A B
法一 每次取餘數 include includeint main system pause return 0 法二 其實直接每次取餘數就能過的 第一遍就是用這種方法過的 這次算是用二分加速過的吧 就是每次都講底數平方 指數除以2 要是偶數沒問題 要是奇數就在將多餘的那部成到sum中 初始值為1 不停...
HDOJ 2035 人見人愛A B
problem description 求a b的最後三位數表示的整數。說明 a b的含義是 a的b次方 input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和b組成 1 a,b 10000 如果a 0,b 0,則表示輸入資料的結束,不做處理。output 對於每個測試例項,請輸出a...
HDU 2035 人見人愛A B
problem description 求a b的最後三位數表示的整數。說明 a b的含義是 a的b次方 input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和b組成 1 a,b 10000 如果a 0,b 0,則表示輸入資料的結束,不做處理。output 對於每個測試例項,請輸出a...