time limit 1000 ms
memory limit 32768 kb
os windows
source acm程式設計期末考試(2006/06/07)
給你兩個數a和b,計算a的b次方,輸出a的b次方的最後三位數所表示的整數。
input
輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和b組成(1<=a,b<=10000),如果a=0, b=0,則表示輸入資料的結束,不做處理。
output
對於每個測試例項,請輸出a^b的最後三位表示的整數,每個輸出佔一行。
sample input
2 312 6
6789 10000
0 0sample output
8984
1思路:
快速求冪求ab,我們可以令b=2x1+2x2+2x3+······+2xn(xn>=0),所以ab=a^(2x1+2x3+2x2+······+2xn)=a^2x1*a^2x2*a^2x3*······a^2xn。其中b=2x1+2x2+2x3+······+2xn(xn>=0)與二進位制轉化為十進位制很相似,所以我們可以通過位運算子&和》對b進行位運算來求得2xn,進而求出ab。該題目要求的是ab的後三位,對結果模1000就行,但是為了防止過程中有資料溢位可以在運算時模1000,低位乘法運算,高位對其無影響。
二分求冪,快速求解a的b次冪
如何求得a的b次冪呢,那還不簡單,乙個for迴圈就可以實現!void main void cout 那麼如何快速的求得a的b次冪呢?上面的 還可以優化嗎?當然是ok的!下面就介紹一種方法 二分求冪。所謂二分求冪,即是將b次冪用二進位制表示,當二進位制位k位為1時,需要累乘a的2 k次方。下面優化一下...
快速冪(求a的b次方 求餘運算)
求a的b次方 public static intquickpower int a,int b base base base自乘,由a 2 n 變成a 2 n 1 b 1 位運算,b右移一位,如1010變成101 把最右邊的1移掉了 除以2 1 return ans 取餘運算 取餘運算有一些好用的性質...
演算法 快速冪,快速冪求逆元
基本思想 3 11 11 1011 3 1 3 3 2 9 3 4 81 3 8 6561 3 11 3 9 6561 第一種 當資料範圍m,k,p 10 9 int qmi int m,int k,int p return res 值得一提 k 1 除以2向0取整 詳細可以看狀態壓縮dp 內含位運...