4173 數學 尤拉函式 思路題

2021-07-09 22:55:32 字數 826 閱讀 7039

由於我太弱。。所以看題解的時候有很多地方想了一會兒才明白。

其實重點就是限定條件n%k+m%k≥k化簡到這個式子⌊n+m/k⌋−⌊n/k⌋−⌊m/k⌋=1的理解。

首先化到⌊n+m/k⌋−⌊n/k⌋−⌊m/k⌋>=1是容易的,只要將取模換成整除然後同時除以k,如果沒有下取整,即n+m/k−n/k−m/k是顯然為0的,而如果帶上取整,最特殊的情況是這樣:不妨用p來表示模數,n=m=k*p+p-1,則⌊n/p⌋=⌊m/p⌋=k,而n+m=(2*k+1)*p+p-2,則⌊n+m/k⌋=2*k+1,也就是說⌊n+m/k⌋−⌊n/k⌋−⌊m/k⌋這個式子的取值只有0或1兩種可能,因此就可以把》=化成=了。

∑n%k+m%k≥kφ(k)

=∑k=1..n+mφ(k)∗⌊n+m/k⌋−∑k=1..mφ(k)∗⌊n/k⌋−∑k=1..mφ(k)∗⌊m/k⌋

這一步化簡其實就是如果⌊n+m/k⌋−⌊n/k⌋−⌊m/k⌋=1則計入答案φ(k)否則不會計入。

至於最後一步∑i=1..n ∑i=1..n ∑k|iφ(k)=∑k=1..nφ(k)∗⌊n/k⌋就比較簡單了。

對於這種化公式的題還要多多練習呀。

#include

#include

#include

#define ll long long

#define m 998244353

using namespace std;

ll n,m;

ll phi(ll n)

if (n>1) tmp-=tmp/n;

return tmp;

}int main()

BZOJ4173 數學 尤拉函式神題

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

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(尤拉函式)

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