40分求大佬帮忙改
查看原帖
40分求大佬帮忙改
1064274
dgz61楼主2025/8/2 19:53
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll t,m,a,b,c;
int main(){
	freopen("uqe.in","r",stdin);
	freopen("uqe.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>t>>m;
	while(t--){
		cin>>a>>b>>c;
		if(a<0) a=-a,b=-b,c=-c;
		ll an=b*b-4*a*c;
		if(an<0){
			cout<<"NO"<<endl;
			continue;
		}
		else if(an==0){
			if(b>0) cout<<'-';
			b=-b;
			a*=2;
			if(b==0) cout<<0<<endl;
			else if(b==a) cout<<1<<endl;
			else if(b%a==0) cout<<b/a<<endl;
			else{
				ll t=__gcd(a,b);
				a/=t;
				b/=t;
				cout<<b<<'/'<<a;
			}
		}
		else{
			if(sqrt(an)*sqrt(an)==an){
				ll q1=-b+sqrt(an),q2=-b-sqrt(an);
				b=max(q1,q2);
				if(b<0) cout<<'-',b=-b;
				a*=2;
				if(b==a) cout<<1<<endl;
				else if(b%a==0) cout<<b/a<<endl;
				else{
					ll t=__gcd(a,b);
					a/=t;
					b/=t;
					cout<<b<<'/'<<a<<endl;
				}
			}
			else{
				if(b>0) cout<<'-';
				b=-b;
				a*=2;
				if(b!=0){
					if(b==a) cout<<1;
					else if(b%a==0) cout<<b/a;
					else{
						ll t=__gcd(a,b);
						a/=t;
						b/=t;
						cout<<b<<'/'<<a;
					}
					cout<<'+';
				}
				ll h=1;
				for(ll i=2;i*i<=an;i++){
					if(an%(i*i)==0){
						h*=i;
						an/=(i*i);
					}
				}
				ll t=__gcd(h,a);
				h/=t;
				a/=t;
				if(h>1) cout<<h<<'*';
				cout<<"sqrt("<<an<<')';
				if(a>1) cout<<'/'<<a;
				cout<<endl;
			}
		}
	}
	return 0;
}
2025/8/2 19:53
加载中...