1 条题解

  • 1
    @ 2024-2-23 11:02:14

    世界上最好的题解😄

    #include<bits/stdc++.h>
    using namespace std;
    int  gcd(int a,int b){
    	if(a<b)swap(a,b);
    	if(b==0)return a;
    	return gcd(b,a%b);
    }
    void ZorX(int a,int b){
    	if(a==0){
    		cout<<0;
    		return ;
    	}
    	if(a%b==0){
    		cout<<a/b;
    		return;
    	}
    	if(a*b<0)cout<<'-';
    	if(a<0)a=-a;
    	if(b<0)b=-b;
    	int t=gcd(a,b);
    	cout<<a/t<<"/"<<b/t;
    }
    void f(int a,int b){
    	if(b<0)b=-b;
    	int t=1;
    	for(int i=sqrt(a);i>=2;i--){
    		if(a%(i*i)==0){
    			a/=(i*i);
    			t=i;
    			break;
    		}
    	}
    	int G=gcd(t,b);
    	t=t/G;b=b/G;
    	if(t!=1)cout<<t<<"*";
    	cout<<"sqrt("<<a<<")";
    	if(b!=1)cout<<'/'<<b;
    }
    int main(){
    	int t,m,a,b,c;
    	cin>>t>>m;
    	while(t--){
    		cin>>a>>b>>c;
    		int delta=b*b-4*a*c;
    		if(delta<0)cout<<"NO";
    		else{
    			int d=sqrt(delta);
    			if(d*d==delta){
    				double a1=1.0*(-b+d)/(2*a);
    				double a2=1.0*(-b-d)/(2*a);
    				if(a1>a2) ZorX((-b+d),(2*a));
    				else ZorX((-b-d),(2*a));
    			}
    			else{
    				if(b!=0)ZorX(-b,2*a);
    				if(b!=0)cout<<'+';
    				f(delta,2*a);
    			}
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    看完别忘了点赞呦👀️

    • 1

    信息

    ID
    9096
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    4
    已通过
    3
    上传者