题解
2024-09-20 21:20:38
发布于:山东
9阅读
0回复
0点赞
本人第一篇题解
#include<cstdio>
#include<iostream>
#define t 2147483647
using namespace std;
struct node{
int number,count;
}a[101];
int m1,m2,n,top;
int main()
{
scanf("%d%d%d",&n,&m1,&m2);
int x=m1;
for(int i=2;i<=x;i++)
{
if(x%i==0)
{
a[++top].number=i;
while(x%i==0)//分解质因数
{
x/=i;
a[top].count++;//找出m1;
}
a[top].count*=m2;//试管总数
}
}
int minn=t;
for(int i=1;i<=n;i++)
{
int m;
scanf("%d",&m);
bool b=true;
for(int j=1;j<=top;j++)
b=b&&(m%a[j].number==0);
if(b)
{
int maxx=0;
for(int j=1;j<=top;j++)
{
int ans=0,mx=m;
while(mx%a[j].number==0)//分解质因数
{
mx/=a[j].number;
ans++;
}
ans=(a[j].count-1)/ans+1;
maxx=max(maxx,ans);
}
minn=min(minn,maxx);
}
}
if(minn==t)
printf("-1");//如果没有改变,输出-1
else
printf("%d",minn);
return 0;
}
这里空空如也
有帮助,赞一个