成功绷不住
查看原帖
成功绷不住
535491
newbie_QwQ楼主2022/3/30 22:42

大家好,我破防了!我写的程序民间70,官方75。

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
using namespace std;
int main()
{
	//freopen("math.in","r",stdin);
	//freopen("math.out","w",stdout);
	long long m,n,i,j,t,x,z,k,y,yy,f;
	scanf("%lld",&t);
	for(i=1;i<=t;i++)
	{
		scanf("%lld %lld",&x,&z);
		y=((z/x)/__gcd(x,(z/x)));
		if(x*y*__gcd(x,y)==z)
		{
			printf("%lld\n",y);
		}
		else
		{ 
			f=0;
			for(j=2;j<=150;j++)
			{
				yy=y*j;
				if(x*yy*__gcd(x,yy)==z)
				{
					printf("%lld\n",yy);
					f=1;
					break;
				}
			}
			if(f==0) printf("-1\n");
		} 
	}
	return 0;
}

但是我同学的代码离谱得很,就是民间数据0分,之后官方全过!(虽然只是没判断是否合法)

#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b)
{
    return b == 0 ? a : gcd(b, a % b);
}
int main()
{
    long long z, x;
    int t;
    cin>>t;
    for(int i = 1; i <= t; i++)
    {
        cin>>x>>z;
        long long ans;
        if(z % x != 0)
        {
            cout<<-1<<endl;
            continue;
        }
        ans = (z / x) / gcd(x, z / x);
        ans *= sqrt((z / x / ans / gcd(x, ans)));
        cout<<(long long)ans<<endl;
    }
    return 0;
}

CCF真就用脚造数据呗?(验证码4nmm祭!)

2022/3/30 22:42
加载中...