解題思路類似莫比烏斯函式之和
題目大意:求[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...