re0pts求助
查看原帖
re0pts求助
542795
楠乐乐楼主2023/11/12 18:47
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int t,m;
int gcd(int a,int b){
	if(b==0)return a;
	else gcd(b,a%b);
}
int main(){
	cin>>t>>m;
	while(t>0){
		t--;
		int a,b,c;
		cin>>a>>b>>c;
		long long x=pow(b,2)-4*a*c;
		if(x<0){
			cout<<"NO"<<endl;
			continue;
		}
		int d=sqrt(x);
		a*=2;
		if(d*d==x){
		    if(a>0){
		        d+=-b;
            }else {
                d=-d-b;
            }
			int g=gcd(d,a);
			d/=g,a/=g;
			if(a<0)a=-a,d=-d;
			if(d%a==0)cout<<d/a<<endl;
			else {
				cout<<d<<"/"<<a<<endl;
			}
			continue;
		}
		int sum=1;
		for(int i=2;i<=d;i++){
			int k=i*i;
			while(x%k==0){
				x/=k;
				sum*=k;
			}
			if(x<k)break;
		}
		if(sum!=1){
			int l=sqrt(sum);
			if(l%a==0){
				l/=a;
				if(l<0)l=-l;
				b=-b;
				int g=gcd(b,a);
			   	b/=g,a/=g;
			   	if(a<0)a=-a,b=-b;
				if(l==1){
					if(b==0){
			    		cout<<"sqrt("<<x<<")"<<endl;
			    	}else
		    		if(b%a==0){
			    		cout<<b/a<<"+"<<"sqrt("<<x<<")"<<endl;
		    		}else {
			    		cout<<b<<"/"<<a<<"+"<<"sqrt("<<x<<")"<<endl;
			    	}
				}else
				if(b==0){
					cout<<l<<"*"<<"sqrt("<<x<<")"<<endl;
				}else
				if(b%a==0){
					cout<<b/a<<"+"<<l<<"*"<<"sqrt("<<x<<")"<<endl;
				}else {
					cout<<b<<"/"<<a<<"+"<<l<<"*"<<"sqrt("<<x<<")"<<endl;
				}
			}else {
				b=-b;
				int g1=gcd(l,a);
				int g2=gcd(b,a);
				int a1=a;
				b/=g2,a/=g2;
				l/=g1,a1/=g1;
				if(a<0)a=-a,b=-b;
				if(a1<0)a1=-a1;
				if(l<0)l=-l;
				if(l==1){
					if(b==0){
	    				cout<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
		    		}else
		    		if(b%a==0){
		    			cout<<b/a<<"+"<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
		    		}else {
			    		cout<<b<<"/"<<a<<"+"<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
		    		}
				}else{
				    if(b==0){
			    		cout<<l<<"*"<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
			    	}else
			    	if(b%a==0){
			    		cout<<b/a<<"+"<<l<<"*"<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
			    	}else {
			    		cout<<b<<"/"<<a<<"+"<<l<<"*"<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
			    	}
                }
			}
		}else {
			b=-b;
			if(b==0){
			    if(a<0)a=-a;
				cout<<"sqrt("<<x<<")"<<"/"<<a<<endl;
			}else
			if(b%a==0){
				if(a<0)a=-a,b=-b;
				cout<<b/a<<"+"<<"sqrt("<<x<<")"<<"/"<<a<<endl;
			}else {
			    int a1=a;
				int g=gcd(b,a);
				b/=g,a/=g;
				if(a<0)a=-a,b=-b;
				if(a1<0)a1=-a1;
				cout<<b<<"/"<<a<<"+"<<"sqrt("<<x<<")"<<"/"<<a1<<endl;
			}
		}
	}
	return 0;
}
2023/11/12 18:47
加载中...