(分治)取餘運算

2021-08-21 03:16:29 字數 795 閱讀 1017

題目描述

輸入b,p,k的值,求b^p mod k的值。其中b,p,k*k為長整型數。

輸入

輸入b,p,k的值。

輸出 求b^p mod k的值。

樣例輸入

2 10 9

樣例輸出

2^10 mod 9=7

餘數公式:

b的p次方可以拆著來算,遞推公式:

p==0 1

p/2==0 f(p)=f(p/2)*f(p/2)

p/2==1 f(p)=f(p/2)*f(p/2)*f(1)

f(x) 意思是b的x次方

if(p==0) return

1; ll tmp=f(b,p/2,k);

ll ans=((tmp%k)*(tmp%k))%k;

if(p/2==1) ans=(ans*(b%k))%k;//如果等於1,拆開不了一半,還得乘一次b

return ans;

#include 

#include

#include

using namespace std;

long int mod_fenzhi(long int b,long int p,long int k)

if(p==2)

if(p%2==0)

if(p%2==1)

}int main()

return

0;}

取餘運算規則

今天遇到乙個在as3,js裡面顯示int64 問題。js,as只有number型別,最大能支援的整數是 2 53 及 9007199254740992 到9007199254740992 當數字超過限度時,只能直接顯示對應的字串,無法用number來轉化。網上找了乙個開源的庫,將int64分成2個3...

1497 取餘運算

時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解輸入b,p,k的值,程式設計計算bp mod k的值。其中的b,p,k k為長整型數 2 31範圍內 輸入描述 input description b p k 輸出描述 output description 輸出b ...

python模運算求餘 取模運算和取餘運算

取模運算和取餘運算 取模運算 modulo operation 和取餘運算 complementation 兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。取模主要是用於 計算機術語中。取餘則更多是數學概念。模運算在數論和程式設計中 都有著廣泛的應用,從奇偶數的判別...