#include<bits/stdc++.h>
using namespace std;
int n,m1,m2,fen,minn=0x3f3f3f3f;
struct xibao{
int number;
int cnt=0;
}xb[105];
int changdu=0;
int main(){
/*
思路:
1.输入细胞种数、试管总数、1秒分裂的同种细胞个数
2.计算m1的m2次方有几种因子,以及因子的个数
3.判断每种细胞分裂后的细胞能不能被平均分,
并算出每种细胞的最小分裂次数,找到最省时间的那种细胞
4.输出最少时间
*/
freopen("cell.in","r",stdin);
freopen("cell.out","w",stdout);
cin>>n;
cin>>m1>>m2;
for(int i=2;i<=m1;i++){
if(m1%i==0){
changdu++;
xb[changdu].number=i;
while(m1%i==0){
xb[changdu].cnt++;
m1/=i;
}
xb[changdu].cnt*=m2;
}
}
while(n--){
cin>>fen;
bool flag=true;
for(int i=1;i<=changdu;i++){
if(fen%xb[i].number!=0){
flag=false;
break;
}
}
if(flag){
int maxn=0;
for(int i=1;i<=changdu;i++){
int sum=0;
while(fen%xb[i].number==0){
sum++;
fen/=xb[i].number;
}
int num=(xb[i].cnt-1)/sum+1;
maxn=max(maxn,num);
}
minn=min(minn,maxn);
}
}
if(minn==0x3f3f3f3f){
cout<<-1;
}else{
cout<<minn;
}
return 0;
}
CSP-J 2009 T3 细胞分裂题解
最新推荐文章于 2026-01-05 22:36:07 发布
133

被折叠的 条评论
为什么被折叠?



