全RE 求大佬路过帮帮忙 调了两小时
查看原帖
全RE 求大佬路过帮帮忙 调了两小时
187407
huangbohan楼主2021/7/7 21:40
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
int N,m1,m2;
int ans,now;
int s;
int v[30010],p[30010];
int main()
{
	scanf("%d",&N);
	scanf("%d %d",&m1,&m2);
	ans=9999999;
	for(int i=2;i<=sqrt(m1);i++)
	{
		if(m1%i==0)
		{
			while(m1%i==0)
			{
				m1/=i;
				p[i]++;
			}
			p[i]*=m2;
		}
		if(m1>1) p[m1]+=m2;
	}
	for(int i=1;i<=N;i++)
	{
		memset(v,0,sizeof(v));
		int tot=-99999999;
		scanf("%d",&s);
		for(int j=2;j<=sqrt(s);j++)
		{
			if(s%j==0)
			{
				while(s%j==0) 
				{
					s/=j;
					v[j]++;
				}
				if(p[j]!=0) 
				{
					now=1;
					while(v[j]<p[j]) 
					{
						v[j]*=2;
						now++;
					}
					tot=max(tot,now);
				}
			}
			if(s>1) 
			{
				v[s]++;
				if(p[s]!=0) 
				{
					now=1;
					while(v[s]<p[s]) 
					{
						v[s]*=2;
						now++;
					}
					tot=max(tot,now);
				}
			}
		}
		ans=min(tot,ans);
	}
	//for(int i=1;i<=5;i++)
	//printf("%d ",p[i]);
	if(ans==-99999999) printf("-1");
	else printf("%d",ans);
	return 0;
} 
2021/7/7 21:40
加载中...