取餘運算(mod,快速冪)

2021-10-02 15:13:21 字數 708 閱讀 1517

【題目描述】

輸入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=b9*b9*b;而b9還可以繼續分解,所以最終的結束條件就是b0=1;這就是分治的思想。

這一段文字的**實現是這樣的:

int

power

(int a,

int b)

沒錯這就是快速冪,不過要算大數的話要吧int換成long long

完整**:

#include

using

namespace std;

typedef

long

long ll;

int k;

intpower

(int

,int);

intmain()

intpower

(int a,

int b)

快速冪 取餘運算

給你三個整數 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 硬來當然不是好方法。但是有乙個規律不知道各位...

快速冪 取餘運算(模板)

有那麼一種演算法可以讓計算a b變得更快,那就是快速冪。如果直接暴力計算的話需要計算b次。時間蠻長的。輸入a,b.a,b為整數 計算a b。輸入格式 兩個整數a b。輸出格式 輸出 a b s s為運算結果 前提 你需要了解二進位制,十進位制。位運算的知識 當然也可以沒有,萬事皆可模擬。沒有位運算的...