题目:
分析:
说了一大堆,就是一个数学问题:
我的思路,进行质数分解。
素数个数表:
不需要:因为需要根据分母来搞分子,所以:
先分母,再分子。
代码:
#include<bits/stdc++.h>
using namespace std;
int A1[30001];
int main()
{
memset(A1,0,sizeof(A1));
/*for(int i=2;i*i<=30000;i++)
{
for(int j=2;i*j<=30000;j++) A[i*j]=-1;
} */
int m;
int m1,m2;
cin>>m>>m1>>m2;
int i=2;
for(;i<=m1;i++)
{
while(1)
{
if(m1%i==0) {
m1=m1/i;
A1[i]++;
}
else break;
}
A1[i]=A1[i]*m2;
}
int ans=1<<30;
for(int ii=0;ii<m;ii++)
{
int c;
cin>>c;
int maxx=-1;
int ok=1;
for(int i2=2;i2<=i;i2++)
{
int num=0;
if(A1[i2]==0) continue;
if(c%i2!=0) {
ok=0;
break;
}
while(1)
{
if(c%i2==0) {
c=c/i2;
num++;
}
else break;
}
maxx=max(maxx,(A1[i2]+num-1)/num);
}
if(!ok) continue;
ans=min(ans,maxx);
}
if(ans!=(1<<30)) cout<<ans;
else if(m1==1||m2==0)
else cout<<-1;
}