数论杂题

抄的 do_while_true 的夏令营讲义。


[SNOI2019] 数论

\(\operatorname{lcm}\) 为周期,每个周期直接算,考虑最后的散段怎么做。考察一个经典结构,对于 \([0,Q-1]\) 中的数建立一个点,每个点向 \((i+P)\bmod Q\) 连边,那么整个图会被分为 \(\gcd(P, Q)\) 个环,每个环的点数是 \(\dfrac{\operatorname{lcm}(P,Q)}{P}\)。假设 \(P\leq Q\),在这个结构上考虑问题,枚举 \(a_i\),我们要找 \(a_i\) 这个环上有多少个 \(b\),在环上做前缀和就可以了。


HDU 5728(共加五个 0)

相较原题 \(n\leq 10^{10},m\leq 10^9\)

对于 \(\sum \varphi(in)\) 经典做法是

\[\sum_{i=1}^m\varphi(in)=\sum_{i=1}^m\dfrac{\varphi(i)\varphi(n)}{\varphi(\gcd(i,n))}\gcd(i,n) \]

然后各种经典套路往里扔,最后推出来

\[Ans=\varphi(n)\sum_{T|n}(\sum_{d|T}\dfrac{d}{\varphi(d)}\mu(\dfrac{T}{d}))(\sum_{i=1}^{\lfloor\frac{m}{T}\rfloor}\varphi(iT)) \]

\(\mu^2(n)=1\) 告诉我们 \(n\) 没有平方因子,于是对于 \(d\) 可以预处理每个因子 \(d\) 的价值,左边那一坨直接 \(O(3^{\omega(n)})\) 剥蒜,右边的地柜下去知道 \(n=1\) 是跑一遍杜教筛就做完了。


CF1034C Region Separation

设权值和为 \(S\),分成 \(k\) 份,那么 \(u\) 的父边需要被断掉当且仅当 \(s_u\bmod S/k=0\),考虑求 \(f_k\) 表示多少个 \(u\) 满足条件,则符合约束当且仅当 \(f_k=k\),考虑求 \(f\),等价变化一下,条件等价于 \(S/k|\gcd(s_u,S)\),进一步等价于 \(\frac{S}{\gcd(s_u,S)}|k,k|S\),然后将所有 \(\frac{S}{\gcd(s_u,S)}\) 标记出来做 Dirichlet 前缀和即可。

posted @ 2025-07-24 21:12  lhc0707  阅读(5)  评论(0)    收藏  举报