Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。

Hanks 博士手里现在有 NN 种细胞,编号从 1-N1−N,一个第 ii 种细胞经过 11 秒钟可以分裂为 S_iSi​ 个同种细胞( S_iSi​ 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培养皿中的所有细胞平均分入 MM 个试管,形成 MM 份样本,用于实验。Hanks 博士的试管数 MM 很大,普通的计算机的基本数据类型无法存储这样大的 MM 值,但万幸的是,MM 总可以表示为 m_1m1​ 的 m_2m2​ 次方,即 M = m_1^{m_2}M=m1m2​​ ,其中 m_1,m_2m1​,m2​ 均为基本数据类型可以存储的正整数。

注意,整个实验过程中不允许分割单个细胞,比如某个时刻若培养皿中有 44 个细胞,

Hanks 博士可以把它们分入 22 个试管,每试管内 22 个,然后开始实验。但如果培养皿中有 55 个细胞,博士就无法将它们均分入 22 个试管。此时,博士就只能等待一段时间,让细胞们继续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。

为了能让实验尽早开始,Hanks 博士在选定一种细胞开始培养后,总是在得到的细胞“刚好可以平均分入 MM 个试管”时停止细胞培养并开始实验。现在博士希望知道,选择哪种细胞培养,可以使得实验的开始时间最早。

输入格式

第一行,有一个正整数 NN ,代表细胞种数。

第二行,有两个正整数 m_1,m_2m1​,m2​ ,以一个空格隔开,即表示试管的总数 M = m_1^{m_2}M=m1m2​​,两数之间以一个空格分隔。

第三行有 NN 个正整数,第 ii 个数 S_iSi​ 表示第 ii 种细胞经过 11 秒钟可以分裂成同种细胞的个数,相邻两数之间以一个空格分隔。

输出格式

一个整数,表示从开始培养细胞到实验能够开始所经过的最少时间(单位为秒)。

如果无论 Hanks 博士选择哪种细胞都不能满足要求,则输出整数 -1−1。

数据范围

对于 50\%50% 的数据,有 m_1^{m_2} \le 30000m1m2​​≤30000 。

对于所有的数据,有 1 \le N \le 100001≤N≤10000 , 1 \le m_1 \le 300001≤m1​≤30000 , 1 \le m_2 \le 100001≤m2​≤10000, 1 \le S_i \le 2,000,000,0001≤Si​≤2,000,000,000。

样例说明

样例1:

经过 11 秒钟,细胞分裂成 33 个,经过 22 秒钟,细胞分裂成 99 个,……,可以看出无论怎么分裂,细胞的个数都是奇数,因此永远不能分入 22 个试管。

样例2:

第 11 种细胞最早在 33 秒后才能均分入 2424 个试管,而第 22 种最早在 22 秒后就可以均分(每试管 144/(241)=6144/(241)=6 个)。故实验最早可以在 22 秒后开始。

格式说明

输出时每行末尾的多余空格,不影响答案正确性

输入、输出要求

要求使用「文件输入、输出」的方式解题,输入文件为 cell.in,输出文件为 cell.out

样例输入1

1
2 1
3

样例输出1

-1

样例输入2

2
24 1
30 12

样例输出2

2
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
struct prime{int cnt,pn[30001],s[30001];
}p,q;
inline int readint(){char c=getchar();while(!isdigit(c))c=getchar();int p=0;while(isdigit(c))p=(p<<3)+(p<<1)+(c^'0'),c=getchar();return p;
}
int n,m1,m2;
void fenjie(int t,prime& p){p.cnt=0;for(int i=2;i*i<=t;++i)if(!(t%i)){p.pn[++p.cnt]=i;p.s[p.cnt]=0;do{t/=i;++p.s[p.cnt];}while(!(t%i));}if(t>1){p.pn[++p.cnt]=t;p.s[p.cnt]=1;}
}
int main(){freopen("cell.in","r",stdin);freopen("cell.out","w",stdout);n=readint(),m1=readint(),m2=readint();if(m1==1){puts("0");return 0;}fenjie(m1,p);int ans=-1,x;while(n--){x=readint();fenjie(x,q);int mx=0,nxt=1;bool ok=false;if(q.cnt>=p.cnt)for(int i=1;i<=p.cnt;++i){while(q.pn[nxt]<p.pn[i]&&nxt<=q.cnt)++nxt;if(nxt>q.cnt||q.pn[nxt]>p.pn[i])break;int f=p.s[i]*m2/q.s[nxt];if(p.s[i]*m2%q.s[nxt])++f;if(mx<f)mx=f;ok=i==p.cnt;}if(ok&&(ans==-1||ans>mx))ans=mx;}printf("%d\n",ans);return 0;
}

[NOIP 2009] 细胞分裂相关推荐

  1. #include NOIP2009 Junior 细胞分裂 ——using namespace wxl;

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细胞实 验做准备工作:培养细胞样本. Hanks 博士手里现在有 N 种细胞,编号从 1~N,一个 ...

  2. [生物] - 怎样理解细胞分裂次数是有限制的

    来源:http://hi.baidu.com/ccd2093/blog/item/3248302da2405736349bf71a.html       人之所以会死,是因为人体细胞的分裂次数是有限制 ...

  3. [1025]Noip 2009 Problem 2

    描述 Description 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根 据计划 ...

  4. 细胞分裂java移植_胚胎移植前,先调理好你的子宫内膜!

    原标题:胚胎移植前,先调理好你的子宫内膜! 子宫是胎儿居住的"宫殿",子宫内膜是宫殿中孕育生命的"温床",是胚胎着床发育的地方,子宫内膜是否"肥沃&q ...

  5. 【codevs2952】 细胞分裂2,快速幂模版

    细胞分裂 2 时间限制: 2 s 空间限制: 16000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 著名生物学家F博士发现了一种单细胞生物. 它长得像蚯蚓,分裂 ...

  6. 2017.4.19 细胞分裂 思考记录

    虽说是普及组最强的数论题,,但还是普及组... 搞了非常久...感觉似乎这就是极限了... 这题主要就是分解质因数..  然后看包含所有容器质因数的最少分裂次数 如果对细胞分裂的质因数出现次数增长.容 ...

  7. 跑步呼吸方法(细胞分裂呼吸法)

    细胞分裂法 指的是只用鼻子呼吸,而不张嘴呼吸 在只用鼻子呼吸时,我们的运动对应的一定是低强度的有氧运动,消耗脂肪的比例较高. 而被迫张开嘴巴呼吸时,很可能已经进入高强度的无氧运动了,此时消耗糖类的比例 ...

  8. 洛谷P1069 细胞分裂 数学

    洛谷P1069 细胞分裂 数学 质因数分解 题意 求一个最小的 自然数 x 使 s[ i ]^x 任意一个s[ i ] 能够整除以 m1^m2 只要能够整除以就行 题解 这题就是分解质因数 但是 分解 ...

  9. 【p093】细胞分裂

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家.现在,他正在为一个细胞实验做准备工作 ...

  10. 【NOIP2009PJ】细胞分裂

    题目描述 ​         Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细胞实 验做准备工作:培养细胞样本. ​         Hanks 博士手里现 ...

最新文章

  1. Hibernate是啥?
  2. 36 岁开发者应聘被拒,这 3 位 50 岁程序员的生存秘籍送给你!
  3. 第10章 常用功能及函数集;客户端IP地址
  4. 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
  5. 系列10—消息中间件
  6. uva 1025——A Spy in the Metro
  7. 厉害了,我的清华大学,各系横幅让网友看花眼,尤其是第3条
  8. comsol分析时总位移代表什么_基于COMSOL的气动软体执行器仿真
  9. 多线程程序设计学习(1)之多线程程序的评量标准
  10. python机器学习之特征值处理(sklearn)
  11. 计算机开机后亮度分布不均,[教程交流]解决最低亮度黑屏和亮度不均
  12. 建模国赛2016A-系泊系统的设计优秀论文
  13. 国产在线三维云CAD:CrownCAD (在线建模CAD软件)
  14. PHP算法学习(5) 位运算
  15. 开源、私有化部署,这款知识管理系统还有多少惊喜是我们不知道的
  16. 小程序 打开地图导航
  17. 打外星生物的塔防java_《异形防御者》测评:外星人也玩塔防游戏
  18. tcl科技云计算机,科技点亮生活,TCL定义智慧科技新生活
  19. CUDA C/C++ 流和并发
  20. 偶遇Chrome浏览器“喔唷,崩溃啦”,错误代码(STATUS_STACK_BUFFER_OVERRUN)

热门文章

  1. Asp .NetCore 支付宝网页授权登录
  2. java生产者消费者 阻塞_java之使用阻塞队列实现生产者,消费者模式
  3. python 黎曼猜想_黎曼猜想简析
  4. 适合自己的网名测试软件,如何取个适合自己的网名?
  5. win7电脑插音响没声音的解决教程--win10专业版
  6. C#方法名前的方括号是干嘛用的呀?
  7. 河北大学计算机系院长,徐建民(河北大学网络空间安全与计算机学院教授)_百度百科...
  8. 正弦定理和余弦定理_教师招聘 数学中学说课稿 《余弦定理》
  9. Spring @Aspect注解
  10. Java Web实训项目:西蒙购物网1