附上原題
題目描述
輸入b,p,k的值,求bp mod k的值。其中b,p,k為長整型數。
輸入格式三個整數b,p,k.
輸出格式輸出「bp mod k=s」 s為運算結果
輸入輸出樣例
輸入 2 10 9
輸出 210 mod 9=7
該題需使用快速冪,以下是快速冪的方法:
乙個數,例如(15)10=(1111)2,(8421)即(23,22,21,20).
a15=a8*a4*a2*a1
接下來是位運算:
a&1用以判斷a最後一位是否為1
a>>=1 用以向右移動一位.
故當要求ab時 ,a作為底數當最後一位為1在結果上乘基數,然後temp自乘變為temp2,b右移一位,若非1則直接自乘,右移。直到b為非正數,res為最終結果。
int a,b,
res(1)
,temp;
temp=a;
while
(b) temp*
=temp;
b>>=1;
}
接下來是取餘運算的一些性質:
(a+b)modb=(amodb+bmodb)modb
(a×b)modb=((amodb)×(bmodb))modb
快速冪 取餘運算
給你三個整數 b,p,k,求 b p mod k。輸入只有一行三個整數,分別代表 b,p,k。輸出一行乙個字串b p mod k s,其中b,p,k分別為題目給定的值,s為運算結果。對於100 的資料,保證0 leq b,p leq 2 1 leq k leq 2 快速冪的模板題,沒有什麼好說的。有...
模板 快速冪 取餘運算
輸入b,p,k的值,求b p mod k的值。其中b,p,k k為長整型數。輸入輸出格式 輸入格式 三個整數b,p,k.輸出格式 輸出 b p mod k s s為運算結果 輸入輸出樣例 輸入樣例 1 2 10 9 輸出樣例 1 2 10 mod 9 7 硬來當然不是好方法。但是有乙個規律不知道各位...
取餘運算(mod,快速冪)
題目描述 輸入b,p,k的值,求bpmodk的值。其中b,p,k k為長整型數。輸入 輸入b,p,k的值。輸出 求bpmodk的值。輸入樣例 2 10 9 輸出樣例 2 10 mod 9 7 題目分析 對於任何乙個自然數b都有b 2 b 2 b 2 例如 19 2x9 1 所以,b19 b9 9 1...