数论杂题
抄的 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)\) 经典做法是
然后各种经典套路往里扔,最后推出来
而 \(\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 前缀和即可。