求助各位神犇,帮忙debug一下
查看原帖
求助各位神犇,帮忙debug一下
558282
SkylineBeauty楼主2022/7/29 00:20

自己造的数据都能过,无法找出错误,求教了

#include<bits/stdc++.h> 
using namespace std;
int gcd(int a,int b)
{
	return b?gcd(b,a%b):a;
}
int ggs(int k)//判断是否勾股数
{
	for(int i=1;i<=sqrt((k-1)/2);i++)
	{
		if(((i+1)*i*2+1)==k)
		return i;//k∈N*,2k^2+2k+1为一组勾股数斜边长,返回k
	}
	return 0;
}
int main()
{
	int a,b,ans,k;
	cin>>a>>b;
	int g=gcd(a,b),bs1=a/g,bs2=b/g;//两数最大公约数必为一组勾股数的斜边长的倍数
	for(int i=2;i<=g;i++)
	{
		if(g%i==0&&ggs(i))//判断其最大公约数的因子是否勾股数
		{
			ans=ggs(i);
			k=g/i;
			goto label;//跳出循环输出答案
		}
	}
	cout<<"NO";return 0;//未找到结束程序
	label:cout<<"YES\n0 0\n";//默认直角顶点0 0
	cout<<-bs1*k*(ans*2+1)<<" "<<-bs1*k*((ans+1)*ans*2)<<endl;//输出分别对应两直角边
	cout<<bs2*k*((ans+1)*ans*2)<<" "<<bs2*k*(ans*2+1);
	return 0;
}
2022/7/29 00:20
加载中...