10pts求条
查看原帖
10pts求条
1495466
LINYUHENG2楼主2025/7/23 17:10
#include<bits/stdc++.h>
using namespace std;
int t,m,a,b,c;
int gcd(int a,int b){
	if(b==0) return a;
	return gcd(b,a%b);
}

int main(){
	//freopen("uqe1.in","r",stdin);
	//freopen("uqe1.out","w",stdout);
	scanf("%d%d",&t,&m);
	while(t--){
		scanf("%d%d%d",&a,&b,&c);
		if(a<0) a=-a,b=-b,c=-c;
		int d=b*b-4*a*c;
		if(d<0){
			printf("NO\n");
			continue;
		}
		int k=1;
		for(int i=2;i*i<=d;i++){
			while(d%(i*i)==0) k*=i,d/=i*i;
		}
		if(d==0||d==1){
			int t=abs(gcd(2*a,-b+k*d));
			printf("%d",(-b+k*d)/t);
			if(a!=1) printf("/%d",2*a/t);
			printf("\n");
			continue;
		}
		int t=abs(gcd(2*a,-b));
		if(-b/t!=0){
			printf("%d",-b/t);
			if(2*a/t!=1) printf("/%d",2*a/t);
			printf("+");
		}
		
		t=abs(gcd(2*a,k));
		if(k/t!=1) printf("%d*",k/t);
		printf("sqrt(%d)",d);
		if(2*a/t!=1) printf("/%d",2*a/t);
		printf("\n");
	}
	return 0;
}
2025/7/23 17:10
加载中...