题解
2026-09-25 15:12:47
发布于:广东
0阅读
0回复
0点赞
#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
int a[100005],sg[30005],xibao[30005];
int main(){
int n,m1,m2;
cin >> n >> m1 >> m2;
if(m1==1){
cout<<0;
return 0;
}
for(int i=1;i<=n;i++) {
cin>>a[i];
}
for(int i=2;i<=m1;i++){
while(m1%i==0){
sg[i]++;
m1/=i;
}sg[i]*=m2;
}int mn=1145141919;
for(int i=1;i<=n;i++){
memset(xibao,0,sizeof(xibao));
int mx=0;
for(int j=2;j<=30000;j++){
while(a[i]%j==0){
xibao[j]++;
a[i]/=j;
}if(!xibao[j]&&sg[j]){
mx=1145141919;
break;
}else if(!xibao[j]) continue;
int ct=sg[j]/xibao[j];
if(sg[j] % xibao[j]) ct++;
mx = max(ct,mx);
}mn=min(mn,mx);
}if(mn==1145141919)cout<<-1;
else cout<<mn;
return 0;
}
这里空空如也







有帮助,赞一个