码迷,mamicode.com
首页 > 其他好文 > 详细

# DZY Love Math 系列

时间:2019-02-08 01:04:09      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:line   mat   欧拉   分组   ESS   www.   函数   方案   枚举   

DZY Love Math 系列

[BOZJ3309] DZY Loves Math

顺着套路就能得到:\(Ans = \sum_{T=1}\lfloor \frac{n}{T} \rfloor \lfloor \frac{m}{T} \rfloor \sum_{d|T} f(d) \mu(\frac{T}{d})\)
问题变为求\(\sum_{d|T} f(d) \mu(\frac{T}{d})\)
你可以见这里
你还可以见这里
然而我就是要再写一遍你管我QwQ......
\(T = \prod_{i=1}^K p_i^{a_i}\)\(d = \prod_{i=1}^Kp_i^{b_i}\),显然有\(a_i\ge b_i\),看到\(\mu\)显然\(|a_i-b_i|\leq 1\)才有意义。
若存在\(a_i>a_j\),则\(b_i\ge b_j\),所以\(b_j\)可以操控符号,即\(f(d) = 0\)
否则说明\(a_1=a_2...=a_K\),显然只有当\(b_i=a_i-1\)对所有\(i\)都成立时,\(f\)的绝对值大小不一样。
所以\(f(d) = (-1)^{K+1}\),记一下最小质因子和每个数包含的不同质因子数,然后就能线性筛\(f\)了。

[BZOJ3462] DZY Loves Math II

把可用质数\(p\)弄出来,不同的\(p\)不会超过\(7\)个,那么就是求\(\sum_{i=1}^K c_i p_i = n\)的合法\(c_i\)组的个数。
由于\(p_i|S\),所以把方案按照\(c_i\% \frac{S}{p_i}\)后的结果分组,然后背包处理\((S-1)(K+1)\)以内的答案。
每次枚举模后方案的答案\(tS + n\% S\),然后设还需要\(x\)\(S\),插板分配到\(K\)个质数中即可。

[BZOJ3481] DZY Loves Math III

用扩欧那套理论可得:\(Ans = \sum_{x=1}^{P} gcd(x,P) [gcd(x,P)|Q]\)
枚举\(d = gcd(x,P)\)\(Ans = \sum_{d|P,d|Q} d\varphi(\frac{P}{d})\)
\(Q' = gcd(P,Q)\)\(Ans = \sum_{d|P} d[d|Q']\varphi(\frac{P}{d}) = \sum_{d|Q'} d\varphi(\frac{P}{d})\)
被小胖坑过的童鞋应该都能立刻反应过来这是狄利克雷卷积,只要算每个质因子的答案即可。
枚举一个质因子\(p\),设\(P\)中有\(a\)个,\(Q'\)中有\(b\)个。
\(a > b\)\(ans(p) = (b + 1)(p-1)p^{a-1}\),若\(a=b\)\(ans(p) = b(p-1)p^{a-1} + p^a\)
大数分解质因数用一下\(Miller-Rabin\)\(Pollard-Rho\)就行了。

[BZOJ3512] DZY Loves Math IV

枚举一个\(n\),然后要算\(S(n,m) = \sum_{i=1}^m \varphi(in)\)
\(d = gcd(i,n)\)
顺着套路展开:\(S(n,m) = \sum_{i=1}^m \varphi(i)\varphi(\frac{n}{d})d = \sum_{i=1}^m \varphi(i) \varphi(\frac{n}{d}) \sum_{e|d} \varphi(e)\)
后面两个玩意合并不了,不过很好解决。
我们设\(n'y = n\),其中\(n'\)\(n\)的每个质因子各取一个构成的数,\(d' = gcd(i,n')\)
\(S(n,m) = y\sum_{i=1}^m \varphi(i) \varphi(\frac{n'}{d'})\sum_{e|d'}\varphi(e)\)
那么此时有\(\frac{n'}{d'} \perp e\)
\(S(n,m) = y\sum_{i=1}^m \varphi(i) \sum_{e|d'}\varphi(\frac{n'}{e}) = y\sum_{i=1}^m \varphi(i) \sum_{e|n',e|i} \varphi(\frac{n'}{e})\)
\(S(n,m) = y\sum_{e|n'} \varphi(\frac{n'}{e}) \sum_{i=1}^{\lfloor \frac{m}{e} \rfloor} \varphi(ie) = y\sum_{e|n'} \varphi(\frac{n'}{e})S(e,\lfloor \frac{m}{e} \rfloor)\)
递归做,\(n = 1\)时杜教筛求\(\varphi\)前缀和即可。

[BZOJ3560] DZY Loves Math V

明摆着是叫你算每一个质因子的贡献,然后把它们都乘起来。
考虑欧拉函数\(\varphi(p^t) = (p-1) p^{t-1}\)
所以每一个质因子的贡献为\((\prod_{i=1}^n (\sum_{j=0}^{c_i} p^j) - 1) (p-1) + 1\),乘起来就行了。

[BZOJ3561] DZY Loves Math VI

顺着套路推(设\(n\leq m\)),可以得到:
\(Ans = \sum_{T=1}^{n} (\sum_{i=1}^{\lfloor \frac{n}{T} \rfloor} i)(\sum_{j=1}^{\lfloor \frac{m}{T} \rfloor} j) \sum_{e|T} (\frac{T}{e})^{\frac{T}{e}} \mu(e) e^{2(\frac{T}{e})}\),暴力算即可。

# DZY Love Math 系列

标签:line   mat   欧拉   分组   ESS   www.   函数   方案   枚举   

原文地址:https://www.cnblogs.com/GuessYCB/p/10355769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!