细胞分裂
时间限制:1秒 内存限制:256M
【问题描述】
Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实 验做准备工作:培养细胞样本。
Hanks 博士手里现在有 \(N\) 种细胞,编号从 \(1..N\),一个第 \(i\) 种细胞经过 1 秒钟可以分裂为 \(S_i\) 个同种细胞(\(S_i\) 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂, 进行培养。一段时间以后,再把培养皿中的所有细胞平均分入 \(M\) 个试管,形成 \(M\) 份样本, 用于实验。Hanks 博士的试管数 \(M\) 很大,普通的计算机的基本数据类型无法存储这样大的 \(M\) 值,但万幸的是,\(M\) 总可以表示为 \(m_1\) 的 \(m_2\) 次方,即 \(M = {m_1}^{m_2} \),其中 \(m_1,m_2\) 均为基本数据类型可以存储的正整数。
注意,整个实验过程中不允许分割单个细胞,比如某个时刻若培养皿中有 4 个细胞, Hanks 博士可以把它们分入 2 个试管,每试管内 2 个,然后开始实验。但如果培养皿中有 5 个细胞,博士就无法将它们均分入 2 个试管。此时,博士就只能等待一段时间,让细胞们继 续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。 为了能让实验尽早开始,Hanks 博士在选定一种细胞开始培养后,总是在得到的细胞“刚 好可以平均分入 \(M\) 个试管”时停止细胞培养并开始实验。现在博士希望知道,选择哪种细 胞培养,可以使得实验的开始时间最早。
【输入格式】
共有三行。
第一行有一个正整数 \(N\),代表细胞种数。
第二行有两个正整数 \(m_1,m_2\),以一个空格隔开,\({m_1}^{m_2}\) 即表示试管的总数 \(M\)。
第三行有 \(N\) 个正整数,第 \(i\) 个数 \(S_i\) 表示第 \(i\) 种细胞经过 1 秒钟可以分裂成同种细胞的个数。
【输出格式】
共一行,为一个整数,表示从开始培养细胞到实验能够开始所经过的 最少时间(单位为秒)。 如果无论 Hanks 博士选择哪种细胞都不能满足要求,则输出整数-1。
【输入输出样例1】
Input
1
2 1
3
Output
-1
【输入输出样例1解释】
经过 1 秒钟,细胞分裂成 3 个,经过 2 秒钟,细胞分裂成 9 个,……,可以看出无论怎么分 裂,细胞的个数都是奇数,因此永远不能分入 2 个试管。
【输入输出样例2】
Input
2
24 1
30 12
Output
2
【输入输出样例2解释】
第 1 种细胞最早在 3 秒后才能均分入 24 个试管,而第 2 种最早在 2 秒后就可以均分(每 试管 \(144/(24^1)=6\) 个)。故实验最早可以在 2 秒后开始。
【数据限制】
对于 \(50\%\) 的数据,有 \({m_1}^{m_2} ≤30000\)。
对于所有的数据,有 \(1≤N≤10000, 1≤m_1≤30000, 1≤m_2≤10000, 1≤S_i≤2,000,000,000\)。
【来源】
Mr.he