求助估分too
查看原帖
求助估分too
551375
junxis楼主2022/3/26 18:29

大样例过了,求估分。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int tt;
ll x,z;
struct ele{int v,k;};
ll gcd(ll xx,ll yy)
{
	return (!yy ? xx : gcd(yy,xx%yy));
}
bool Isp(ll x)
{
	for(ll i=2;i*i<=x;i++)
	{
		if(x%i==0)
		{
			return 0;
		}
	}
	return 1;
}
void solve()
{
	scanf("%lld%lld",&x,&z);
	if(x>z||z%x)
	{
		printf("-1\n");
		return ;
	}
	if(x==z)
	{
		printf("1\n");
		return ;
	}
	ll a=z/x;
	if(Isp(a))
	{
		if(gcd(x,a)!=1)
			printf("-1\n");
		else printf("%lld\n",a);
		return ;
	}
	ll up=gcd(x,a);
	vector<ll>co;
	for(ll i=up;i>=1;i--)
	{
		if(x%i==0&&a%i==0)
		{
			if(i==gcd(a/i,x))
			{
				printf("%lld\n",a/i);
				return ;
			}
		}
	} 
}
int main()
{
	freopen("math.in","r",stdin);
	freopen("math.out","w",stdout);
	cin>>tt;
	while(tt--)
		solve();
	return 0;
} 
2022/3/26 18:29
加载中...