题目:质因数对齐
题目描述
小 A 有一个包含 N 个正整数的序列。每次操作,他可以选择任意一个数,乘以一个质数或除以一个质数(要求能整除),每次操作消耗 1 金币。
小 A 希望经过若干次操作后,序列中所有数都相等。请你帮他计算最少需要多少金币。
输入格式
第一行:一个正整数 N(1≤N≤105)
第二行:N 个正整数 A1,A2,…,AN(1≤Ai≤105)
输出格式
输出一个整数,表示最少金币数。
输入输出样例
样例输入
5
10 6 35 105 42
样例输出
8
说明
操作理解
每个正整数都可以写成质因数乘积的形式:
- 乘以质数 P → 某个质因数的指数 +1
- 除以质数 P → 某个质因数的指数 −1
例如:
- 10=21×51
- 乘以 3:10×3=30=21×31×51
- 除以 2:10÷2=5=51
数据范围
- 对于 60% 的数据:N,Ai≤100
- 对于 100% 的数据:N,Ai≤105
提示
独立性:每个质因数是独立的,总花费 = 所有质因数的花费之和。
对于某个质因数 p:
- 设 N 个数中 p 的指数分别为 e1,e2,…,eN(指数为 0 也要算)
- 如果最终所有数中 p 的指数都是 t,则花费为 ∑∣ei−t∣
- 要使花费最小,t 应取 e1,e2,…,eN 的中位数