比赛 |
练习Noip2009 |
评测结果 |
AAAAAAAAAA |
题目名称 |
细胞分裂 |
最终得分 |
100 |
用户昵称 |
梦那边的美好ET |
运行时间 |
0.015 s |
代码语言 |
C++ |
内存使用 |
0.39 MiB |
提交时间 |
2018-06-19 21:06:46 |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int n,m1,m2,ans,cnt,a[10001],b[10001];
int main(){
freopen("cell.in","r",stdin);
freopen("cell.out","w",stdout);
cin>>n>>m1>>m2;
if(m1==1){
cout<<"0";
return 0;
}
for(int i=2;i<=m1&&m1>0;i++){
if(m1%i==0){
a[++cnt]=i;
while(m1%i==0){
b[cnt]++;m1/=i;
}
b[cnt]*=m2;
}
}
ans=99999999;
for(int i=1;i<=n;i++){
int s,x=0;
cin>>s;
for(int j=1;j<=cnt;j++) {
if(s%a[j]!=0){
x=99999999;
break;
}
int k=0;
while(s%a[j]==0){
k++;s/=a[j];
}
if(b[j]%k==0)x=max(x,b[j]/k);
else x=max(x,b[j]/k+1);
}
ans=min(ans,x);
}
if(ans==99999999)cout<<"-1";
else cout<<ans;
return 0;
}