20pts
查看原帖
20pts
376169
jacky_bai楼主2023/11/19 20:23
#include<bits/stdc++.h>
using namespace std;
bool delta(int a,int b,int c){
	if(b*b-4*a*c>=0)
		return 1;
	else
		return 0;
}
int ann(int p){
	int k=sqrt(p);
	for(int i=k;i>=1;i--)
		if(p%(i*i)==0)
			return i;
}
int gcd(int a,int b){
	int k=min(a,b);
	for(int i=k;i>=1;i--)
		if(a%k==0&&b%k==0)
			return k;
}
long long k;
int a,b,c;
int main(){
	int T;
	cin>>T>>k;
	while(T--){
		cin>>a>>b>>c;
		if(!delta(a,b,c))
			cout<<"NO";
		else{
			if(b==0&&c==0){
				cout<<0<<'\n';
			}
			else if(b==0){
				if(abs(a)/gcd(ann(-a*c),abs(a))!=1)
					cout<<ann(-a*c)/gcd(ann(-a*c),abs(a))<<"*"<<"sqrt("<<(-a*c)/(ann(-a*c)*ann(-a*c))<<")"<<'/'<<abs(a)/gcd(ann(-a*c),abs(a))<<'\n'; 
				else
					cout<<ann(-a*c)/gcd(ann(-a*c),abs(a))<<"*"<<"sqrt("<<(-a*c)/(ann(-a*c)*ann(-a*c))<<")"<<'\n';	
			}
			else if(c==0){
				if(a*b>0)
					cout<<0<<'\n';
				else{
					if(abs(a)/gcd(abs(a),abs(b))!=1)
						cout<<abs(b)/gcd(abs(a),abs(b))<<"/"<<abs(a)/gcd(abs(a),abs(b))<<'\n';
					else
						cout<<abs(b)/gcd(abs(a),abs(b))<<'\n';
				}
			}
			else 
				cout<<(-b+sqrt(b*b-4*a*c))/(2*a);
		}
	}
	return 0;
}

2023/11/19 20:23
加载中...