除#1其余全WA代码有注释求Hack数据
查看原帖
除#1其余全WA代码有注释求Hack数据
1284582
F_L_Bird楼主2024/8/16 10:09

代码如下

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

inline int gcd(int a,int b){		//最大公因数
	if(a % b == 0)
	{
		return b;
	}
	return gcd(b,a % b);
}

inline void print(int a,int b){	// 按照规则输出有理数
	if(a % b == 0)
	{
		printf("%d",a / b);
		return;
	}
	else if(a == 0)
	{
		cout<<0;
		return;
	}
	else
	{
		if(a * b < 0) 	//考虑是否输出负号
		{
			printf("-");
		}
		a = (a > 0 ? a : a * -1);
		b = (b > 0 ? b : b * -1);
		int temp = gcd(max(a,b),min(a,b));
		a /= temp;
		b /= temp;
		printf("%d/%d",a,b);
	}
	return;
}

inline int solve_sqrt(int n){		//化为最简二次根式,n为将要被开方的数
	for(register int i = sqrt(n) + 1;i >= 1;i -= 1)
	{
		if(n % (i * i) == 0)
		{
			return i;
		}
	}
	return 1;
}

inline bool can_sqrt(int n){
	for(register int i = 0;i * i <= n;i += 1)
	{
		if(i * i == n)
		{
			return true;
		}
	}
	return false;
}

int main(){
	int t,m;
	cin>>t>>m;
	for(int i = 0;i < t;i += 1)
	{
		int a,b,c,has_answer;
		if(a < 0)
		{
			a *= -1;
			b *= -1;
			c *= -1;
		}
		scanf("%d %d %d",&a,&b,&c);
		has_answer = b*b - 4*a*c;
		if(has_answer < 0)		//无解
		{
			printf("NO\n");
			continue;
		}
		else if(can_sqrt(has_answer))	//解为有理数
		{
			print(0 - b + sqrt(has_answer),2*a);
			cout<<endl;
			continue;
		}
		else	//解为无理数
		{
			int temp = solve_sqrt(has_answer);	//temp > 0
			has_answer /= (temp * temp);	//化为最简二次根式
			if(b != 0)		//输出有理数部分,为0则不输出
			{
				print(0 - b,2*a);
				cout<<'+';
			}
			a *= a < 0 ? -1 : 1;	//要求输出最大解,则令分子分母同号
			if(temp % (2 * a) == 0)		//若无理数系数为整数
			{
				if(temp == (2 * a))		//若无理数系数为一则不输出系数
				{
					printf("sqrt(%d)\n",has_answer);
				}
				else
				{
					printf("%d*sqrt(%d)\n",temp / (2 * a),has_answer);
				}
			}
			else		//无理数系数为分数
			{
				int gcd_num = gcd(max(temp,2 * a),min(temp,2 * a));
				if(temp / gcd_num == 1)		//若化简后无理数系数分子为1则不输出分子
				{
					printf("sqrt(%d)/%d\n",has_answer,2 * a / gcd_num);
				}
				else
				{
					printf("%d*sqrt(%d)/%d\n",temp / gcd_num,has_answer,2 * a / gcd_num);
				}
			}
		}
	}
	return 0;
}

总之求Hack数据啦qwq,有用必关谢谢喵~

2024/8/16 10:09
加载中...