0分求助
查看原帖
0分求助
1191031
majingxuan123楼主2024/2/25 20:44
#include<iostream>
#include<cmath>
#include<algorithm> 
using namespace std;
int t,m,a,b,c;
void print(int a,int b,int num){
	if(a<0&&b>0||a>0&&b<0)printf("-");
	a=abs(a),b=abs(b);
	if(b==0&&num==1)printf("0");
	else if(b!=0){
		int g=__gcd(a,b);
		a/=g,b/=g;
		if(a==1)printf("%d",b);
		else if(b>0)printf("%d/%d",b,a);
	}
	if(b!=0&&num==2)printf("+");
}
int main(){
	scanf("%d%d",&t,&m);
	while(t--){
		scanf("%d%d%d",&a,&b,&c);
		int s=b*b-4*a*c;
		if(s<0){
			puts("NO");
			continue;
		}
		int q=sqrt(s);
		if(q*q==s){
			int x=-b-q,y=-b+q,z;
			a*=2;
			if(a>0)z=max(x,y);
			else x=min(x,y);
			print(a,z,1);
			printf("\n");
		}
		else{
			int ans=1;
			for(int i=q;i>=2;i--){
				if(s%(i*i)==0){
					ans=i;
					s/=i*i;
					break;
				}
			}
			a*=2,b=-b;
			print(a,b,2);
			a=abs(a);
			int g=__gcd(a,ans);
			a/=g,ans/=g;
			if(ans!=1)printf("%d*",ans);
			printf("sqrt(%d)",s);
			if(a!=1)printf("/%d",a);
			printf("\n");
		}
	}
	return 0;
} 

记录详情

2024/2/25 20:44
加载中...