#2#5#8#9WA,求调
查看原帖
#2#5#8#9WA,求调
694969
hcy1117楼主2024/3/12 21:03
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m1,m2;
int a[10005];
bool f[30005];
int p[10005];
int tot;
void prime()
{
	f[0]=f[1]=1;
	for(int i=1;i<=30000;i++)
	{
		if(!f[i])p[++tot]=i;
		for(int j=1;j<=tot&&i*p[j]<=30000;j++)
		{
			f[i*p[j]]=1;
			if(i%p[j]==0)break;
		}
	}
}
int t[10005];
int m[10005];
signed main()
{
	prime();
	cin>>n>>m1>>m2;
	if(m1==1)
	{
		cout<<0;
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	int o=m1;
	int cnt=1;
	while(o>1)
	{
		if(o%p[cnt]==0)
		{
			while(o%p[cnt]==0&&o>1)
			{
				o/=p[cnt];
				m[cnt]++;
			}
			m[cnt]*=m2;
			for(int i=1;i<=n;i++)
			{
				if(t[i]==-1)continue;
				int x=a[i];
				int ti=0;
				while(x%p[cnt]==0)
				{
					x/=p[cnt];
					++ti;
				}
				if(ti==0)t[i]=-1;
				else t[i]=max(t[i],max(0*1ll,m[cnt]-ti));
			}
		}
		++cnt;
	}	
	bool flag=0;
	int minn=INT_MAX;
	for(int i=1;i<=n;i++)
	{
		if(t[i]!=-1)minn=min(minn,t[i]+1),flag=1;
	}
	if(flag)cout<<minn;
	else cout<<-1;
}
2024/3/12 21:03
加载中...