这题为什么这个代码能过?!
查看原帖
这题为什么这个代码能过?!
494699
卷王慢即快楼主2022/8/31 16:03
#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 11 //我谔谔这这这这这这这这这这这这这这这这这这……
int n,m1,m2,prime[maxn],tot[maxn],a[maxn],s;
int ans=2e9;
inline int work(int x)
{
	int c1=0,c2=0;
	for(int i=2;i<=x/i;i++)
		for(;x%i==0;x/=i)
		    a[++c1]=i;
	if(x>1) a[++c1]=x;
	for(int i=1;i<=c1;i++,tot[c2]++)
		if(a[i]!=a[i-1]) prime[++c2]=a[i];
	return c2;
}
inline int read();
int main()
{
	n=read(),m1=read(),m2=read();
	int cnt=work(m1);
	for(int k=1;k<=n;k++)
	{
		s=read();
		int x=0;
		for(int i=1;i<=cnt;i++)
		{
			int p=prime[i];
			if(s%p!=0) { x=-1; break; }
			else
			{
				int e=0;
				for(;s%p==0;s/=p) e++;
				x=max(x,1+(m2*tot[i]-1)/e);
			}
		}
		if(x>=0) ans=min(ans,x);
	}
	if(ans==2e9) printf("-1");
	else printf("%d",ans);
	return 0;
}
inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}

注意:我提交了很多次只是因为想试试这题数据水到什么程度,非故意扰乱洛谷的评测!

2022/8/31 16:03
加载中...