BZOJ 4805 尤拉函式求和

2022-09-18 01:51:28 字數 961 閱讀 4849

解題思路類似莫比烏斯函式之和

題目大意:求[1,n]內的尤拉函式$\varphi$之和。($n<=2*10^$)

思路:令$ m(n)=\sum_^\varphi (i)  $,題目所求即為$ m(n) $。

由於$ \sum_ \varphi (d)=n $ ,所以$ \sum_^ \sum_ \varphi (d)=\frac $

令$ i=kd $,則有$ \sum_^ \sum_ \varphi (d)= \sum_^ \sum_^ \varphi (d) = \sum_^ m(\left \lfloor n/k \right \rfloor) =\frac $

那麼$ m(n)=\frac-\sum_^ m(\left \lfloor n/i \right \rfloor) $

由於$ \left \lfloor n/i \right \rfloor $的取值只有$ o(\sqrt) $種,預處理出前$ n^} $的$ m(n) $,然後記憶化搜尋,可以證明總時間複雜度為$ o(n^}) $。

#include#define ll long long

#define mn 1600000

#define mod 2333333

struct edge*h[mod];

ll f[mn+5

];int p[mn+5

],pn;

bool u[mn+5

];ll cal(

intn)

;h[n%mod]=np;

for(int i=2,ls;i<=n;i=ls+1)ls=n/(n/i),np->f-=(ls-i+1)*cal(n/i);

return np->f;

}int

main()

f[i]+=f[i-1

]; }

printf(

"%lld

",cal(n));

}

BZOJ4805 尤拉函式求和

bzoj4805 尤拉函式求和 給出乙個數字n,求sigma phi i 1 i n 正整數n。n 2 10 9 輸出答案。1032 題目要求 sum n varphi i 這。不是很顯然乙個線性篩然後字首和就沒了麼?水題?並不!n leq 2 times 10 9 直接 tle 到 怎麼辦?沒事,...

BZOJ4805 尤拉函式求和

題目大意 對於給定的 n n leq2 times10 9 求 sum n varphi i 思路 設 s n sum n varphi i 因為 sum varphi d n s n sum n i sum 13const int n 1587402,m 120256 14 bool vis n ...

bzoj4805 尤拉函式求和(杜教篩)

題意 給定n,求尤拉函式前n項和。資料範圍 n 2e9 解法 尤拉函式性質 d n d n sum d n d n d n轉化為卷積形式 i i d i id i id 杜教篩遞推式 g 1 s n i 1n f g i i 2 ng i s ni g 1 s n sum n f g i sum n...