除法取餘解決方法

2021-09-28 23:23:55 字數 936 閱讀 6088

在實際做題中,我們經常能遇到對除法取餘的式子,比如(a/b)%c。碰到這種情況我們有兩種方法來解決。

(a/b)mod m = [a mod (m*b) ] / b

證明如下:

首先說一下費馬小定理

費馬小定理(fermat』s little theorem)是數論中的乙個重要定理,在2023年提出。如果p是乙個質數,而整數a不是p的倍數,則有a^(p-1)≡1(mod p)。

然後說一下逆元 如果存在x使得 ax ≡1 mod p,則說x是a的逆元。

通過上面我們知道a(p-1)≡1(mod p),我們將等式換為a * a(p-2) ≡ 1 mod p,這不就說明了a的逆元就是a(p-2)嘛。

回到我們的 (a/b) mod c,通過變換的到 a * 1 * b-1 mod c

我們又知道 bc-1 mod c = 1, 帶入上面的到,a* b c-1 * b-1 mod c

在變換得到a*bc-2 mod c。

這樣就把乙個除法的式子轉換為了乙個乘法的式子,一般情況下這個c都特別的大,所以b的逆元應該使用快速冪進行求解。而且給出的c也都是乙個素數。牛客

解題思路,平方和公式 n * (n+1) * (2 * n+1)/6

對於除6,要使用逆元進行求解

#include

using

namespace std;

typedef

long

long ll;

const

long

long mod =

1000000007

;ll qul

(ll a, ll b)

return sum;

}int

main()

return0;

}

C語言的除法與取餘運算

在c語言中,負數除法運算與正數除法運算不一樣,遵循原則有 a b 分子分母的符號,相同為正,相異為負 a b 結果取分子 a 的符號,即與被除數 a 符號相同 eg 3 16 0 16 3 5 3 16 3 16 3 1 在數學公式中,c語言和python的表示演算法都是一樣的 r a n a n ...

亂碼解決方法

jsp頁面顯示亂碼 pageencoding utf 8 servlet頁面顯示亂碼 在response輸出內容之前,執行response.setcontenttype text html charset utf 8 post表單傳遞引數亂碼 通過jsp頁面 html頁面或者servlet中的表單元...

usr bin ld lc解決方法

背景 使用海思交叉編譯器編譯庫檔案中出現。原因 ld表示連線,lc表示需要連線libc.a。出現這個,說明缺少需要的libc.a檔案。解決過程 剛開始以為是海思交叉編譯器的問題,便在安裝目錄find libc.a,找到很多個,排除這個原因 然後檢查路徑問題,發現路徑也沒問題。回想一下,虛擬機器是mi...