BZOJ4173 數學 題解(數論)

2022-03-26 10:28:00 字數 1714 閱讀 3751

前言:體驗到了推式子的快感orz

題目大意:求$\varphi(n)*\varphi(m)*\sum_ \varphi(k)\ mod\ 998244353$

設$n=q_1k+r_1,m=q_2k+r_2$,那麼$q_1=\lfloor \frac \rfloor,q_2=\lfloor \frac \rfloor$。

$n+m=(q_1+q_2)k+r_1+r_2$

$(n+m)-(q_1+q_2)k=r_1+r_2$

$\lfloor \frac \rfloor-\lfloor \frac \rfloor-\lfloor \frac \rfloor=r_1+r_2=1$

所以現在變為:找到滿足上式的$k$。

我們先給出乙個式子:

$ans=\sum\limits_^\varphi(k)*\lfloor \frac \rfloor-\sum\limits_^n \varphi(k)*\lfloor \frac \rfloor-\sum\limits_^m \varphi(k)*\lfloor \frac \rfloor$

這個式子是什麼意思?

對於$(\lfloor \frac \rfloor-\lfloor \frac \rfloor-\lfloor \frac \rfloor)*\varphi(k)$:

如果$k$滿足條件,那麼係數為$1$,對答案有貢獻。如果$k$不合法那麼係數為$0$,對答案是沒有貢獻的。所以上面給出的式子可以計算所有合法的答案。

現在我們嘗試對$\sum\limits_^n \varphi(k)*\lfloor \frac \rfloor$進行化簡。

有這樣乙個關係:$\sum\limits_^n i=\sum\limits_^n \sum\limits_\varphi(k)=\sum\limits_^n \varphi(k)*\lfloor \frac \rfloor$

證明:$\sum\limits_^n i=\sum\limits_^n \sum\limits_\varphi(k)$

對於乙個數$i$,在小於等於它的數中有這樣的關係:

1.最大公約數為$1$,記為$g_1$,個數顯然是$\varphi(i)$

2.最大公約數為$2$,記為$g_2$,個數是$\varphi(i/2)$

$\cdots$

i.最大公約數為$i$,記為$g_i$,個數為$1$。

這些集合的並集大小為$i$,所以上述等式成立。

現在來看$\sum\limits_^n \sum\limits_\varphi(k)=\sum\limits_^n \varphi(k)*\lfloor \frac \rfloor$

對於左式,其意義為考慮每個$i$對答案的貢獻;而對於右式,其意義為考慮每個合法的$k$對答案的貢獻。二者對於答案的總貢獻是相同的,所以等式成立。

經過化簡,最終答案為$\varphi(n)*\varphi(m)*n*m$

**:

#include#define int  long long

using

namespace

std;

const

int mod=998244353

;int

n,m,ans;

inline

int phi(int

x)

if (x>1) res=res/x*(x-1

);

return res%mod;

}signed main()

bzoj4173數學(尤拉函式)

倒數第二行的拓展 借用某群提問的乙個問題 對於d phi d 當d為k時,在左式,他出現在 i 為k,2k,3k.n k k 共出現n k次,在右式,他出現在 n i 為n 1,n 2.n n k 共出現n k次,畫個 每行就是每個 i 對應1,2,3.floor n i i 從1 n畫出後就是乙個...

BZOJ4173 數學 尤拉函式神題

輸入檔案的第一行輸入兩個正整數 如題5 6 240n,m 10 15 題解 step 1 這步還是很容易的吧 畢竟原來的式子不太舒服。但是注意,最後乙個式子的取值只能為0或1,所以就變成了。step 2 這步倒是難理解一些,但是考慮 我們將這三個等式都算出來,如果滿足了左邊那個條件,那麼這三個等式加...

bzoj4173(尤拉函式)

資料大 10 15次方 公式複雜 不知道怎麼化簡 然後,感覺滿足打表找規律,發現sigema phi k k屬於s n,m n m。再求兩個phi就好,注意在括號裡面mod之後,需要在括號外面再mod一次,否則會wa。標準證明 總結1 很多的問題,通過小範圍資料打表,是非常便於幫助分析題目的性質的,...