这是代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100010],b[100010],c[100010];
int main()
{
long long n,m1,m2,maxn=-1,flag2=1,minn=9999999;
cin>>n>>m1>>m2;
if(m1==1&&m2==1)
{
cout<<0;
return 0;
}
long long ls=m1;
for(long long i=2;ls>1;i++)
{
while(ls%i==0)
{
ls/=i;
a[i]++;
maxn=max(maxn,i);
}
}
for(long long i=1;i<=maxn;i++)
{
a[i]*=m2;
}
for(long long i=1;i<=n;i++)
{
cin>>c[i];
ls=c[i];
for(long long j=2;ls>1;j++)
{
while(ls%j==0)
{
ls/=j;
b[j]++;
}
}
long long maxn2=-1,flag=1;
for(long long j=1;j<=maxn;j++)
{
if(a[j]>b[j]&&b[j]==0)
{
flag=0;
break;
}
if(a[j]>b[j])
{
ls=ceil(a[j]*1.0/b[j]);
maxn2=max(maxn2,ls);
}
}
for(int j=1;j<=maxn;j++)
{
b[j]=0;
}
if(flag==1)
{
flag2=0;
minn=min(minn,maxn2);
}
}
if(flag2==1)cout<<-1;
else cout<<minn;
return 0;
}```
## 求个大佬给出减少时间的方案