#3604. 质因数对齐

质因数对齐

题目:质因数对齐

题目描述

小 A 有一个包含 NN 个正整数的序列。每次操作,他可以选择任意一个数,乘以一个质数除以一个质数(要求能整除),每次操作消耗 1 金币。

小 A 希望经过若干次操作后,序列中所有数都相等。请你帮他计算最少需要多少金币。

输入格式

第一行:一个正整数 NN1N1051 \le N \le 10^5

第二行:NN 个正整数 A1,A2,,ANA_1, A_2, \dots, A_N1Ai1051 \le A_i \le 10^5

输出格式

输出一个整数,表示最少金币数。

输入输出样例

样例输入

5
10 6 35 105 42

样例输出

8

说明

操作理解

每个正整数都可以写成质因数乘积的形式:

  • 乘以质数 PP → 某个质因数的指数 +1+1
  • 除以质数 PP → 某个质因数的指数 1-1

例如:

  • 10=21×5110 = 2^1 \times 5^1
  • 乘以 3310×3=30=21×31×5110 \times 3 = 30 = 2^1 \times 3^1 \times 5^1
  • 除以 2210÷2=5=5110 \div 2 = 5 = 5^1

数据范围

  • 对于 60%60\% 的数据:N,Ai100N, A_i \le 100
  • 对于 100%100\% 的数据:N,Ai105N, A_i \le 10^5

提示

独立性:每个质因数是独立的,总花费 = 所有质因数的花费之和。

对于某个质因数 pp

  • NN 个数中 pp 的指数分别为 e1,e2,,eNe_1, e_2, \dots, e_N(指数为 0 也要算)
  • 如果最终所有数中 pp 的指数都是 tt,则花费为 eit\sum |e_i - t|
  • 要使花费最小,tt 应取 e1,e2,,eNe_1, e_2, \dots, e_N中位数