80TLE求助
查看原帖
80TLE求助
225090
54lyc楼主2020/10/31 11:37

这是代码:

#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;
}```
## 求个大佬给出减少时间的方案
2020/10/31 11:37
加载中...