倒數第二行的拓展(借用某群提問的乙個問題):
對於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畫出後就是乙個逐漸縮減的三角形,每列對應乙個d的值,每個d出現在 i 為floor(5/i)>=3的地方,終止在floor(5/i)=3的地方,所以每個d出現次數是 floor(n/i)
而左式在圖中的體現是把每個縱列d的每個安放位置調整一下,例如②,第乙個2在i==1,第二個2調整到i==4,總出現次數不變(即看n中有幾個大小為2的塊
)這裡d用兩種不同的方式出現在這些個 i 中,分析第一種有n/k個值能d|i 時,第二種就是把這個方式解釋一下
~~~而等號右邊換成
同樣成立,證明更簡單了,就是引數為k時出現n/k次!!!
第乙個等式用莫比烏斯反演列出f(1),f(2)...f(n)那些個等式,就很容易發現f(n)=n
小總結:模『%』 整除『|』 這些抽象符號盡量化簡成+-*/ 的形式!!!
ac**:
#include#define per(i,a,b) for(int i=a;i<=b;i++)#define mod 998244353//
注意mod最好define,不要定義型別,否則需要ll的時候會錯,不過呢,ll的時候int也會變成ll把
using
namespace
std;
typedef
long
long
ll;const
int inf =0x3f3f3f3f
;const
double eps=1e-8;//
#define siz 1000005
ll read()
while(ch>'
1'&&ch
return res*f;
}ll n,m;
ll phi(ll n)
//n除完素因子後為1
} }
if(n!=1)
return
re;}
intmain()
bzoj4173(尤拉函式)
資料大 10 15次方 公式複雜 不知道怎麼化簡 然後,感覺滿足打表找規律,發現sigema phi k k屬於s n,m n m。再求兩個phi就好,注意在括號裡面mod之後,需要在括號外面再mod一次,否則會wa。標準證明 總結1 很多的問題,通過小範圍資料打表,是非常便於幫助分析題目的性質的,...
BZOJ4173 數學 尤拉函式神題
輸入檔案的第一行輸入兩個正整數 如題5 6 240n,m 10 15 題解 step 1 這步還是很容易的吧 畢竟原來的式子不太舒服。但是注意,最後乙個式子的取值只能為0或1,所以就變成了。step 2 這步倒是難理解一些,但是考慮 我們將這三個等式都算出來,如果滿足了左邊那個條件,那麼這三個等式加...
4173 數學 尤拉函式 思路題
由於我太弱。所以看題解的時候有很多地方想了一會兒才明白。其實重點就是限定條件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的,而如果帶上...