题解 | #变换# #质因数分解# #数论#
变换
https://ac.nowcoder.com/acm/contest/7606/D
牛客7606D - 变换
题意
- 给出一个长度为 n(n≤106) 的序列 ai(1≤ai≤106),你每次操作可以选择一个数字不变,其他数字乘以任意一个质数
- 求出:为使序列中所有数字两两相同,至少需要的操作次数
思路
- 最终序列中所有数字两两相同,那么这个数字是什么?
- 假设这个数字是 A,那么 A 可以写成 p1x1×p2x2×⋯×pkxk 的形式,设 P1={p1,p2,…pk}
- 对于i∈[1,n],将每个 ai 质因数分解,将质因数放入集合 P2 中(一边放入一边去重,P2 中无重复元素)
- 那么,P1=P2,也就是说,数字 A 的每个质因子,都能由至少一个 ai 经分解质因子得到
- 操作 “选择一个数字不变,其他数字乘以任意一个质数”,相当于
- 对于每个集合 P2 中的质因子 p,用 f(x) 表示:满足 p 出现了至少 x 次的 ai 的数量,形式化地,f(x)=∑i=1n[ai∣px],此时 f(x) 对答案的贡献是 f(x)modn