比赛 练习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;
}