10分求问
查看原帖
10分求问
1054002
dz6666楼主2024/8/10 11:06
#include<bits/stdc++.h>
using namespace std;

int main()
{
	int t,m;
    cin>>t>>m;
    while(t--)
    {
        int a,b,c;
        cin>>a>>b>>c;
        int d=pow(b,2)-4*a*c;
        if(d<0)
        {
            cout<<"NO"<<endl;
            continue;
        }
        if(d==0)
        {
            if(b==0)
            {
                cout<<0<<endl;
                continue;
            }
            if(a<0)
            {
                a=-a;
                b=-b;
            }
            int fz=-b;
            int fn=2*a;
            int g=__gcd(fz,fn);
            g=abs(g);
            fz/=g;
            fn/=g;
            if(fn==1)
                cout<<fz<<endl;
            else
                cout<<fz<<"/"<<fn<<endl;
        }
        else{
            int c=1;
            for(int i=2;i*i<=d;i++)
            {
                if(d%(i*i)==0)
                {
                    c*=i;
                    d/=(i*i);
                    i--;
                }
            }
            if(a<0)
            {
                a=-1;
                b=-b;
            }
            if(d==1)
            {
                int fz=-b+c;
                int fn=2*a;
                if(fz==0)
                {
                    cout<<0<<endl;
                    continue;
                }
                int g=__gcd(fz,fn);
                g=abs(g);
                fz/=g;
                fn/=g;
                if(fn==1)
                {
                    cout<<fz<<endl;
                    continue;
                }  
                else
                {
                    cout<<fz<<"/"<<fn<<endl;
                }
            }
            else
            {
                if(b!=0)
                {
                    int fz=-b;
                    int fn=2*a;
                    int g=__gcd(fz,fn);
                    g=abs(g);
                    fz/=g;
                    fn/=g;
                    if(fn==1)
                        cout<<fz;
                    else
                        cout<<fz<<"/"<<fn;
                    if(c>0)
                    {
                        cout<<"+";
                    }
                }
                int fz=c;
                int fn=2*a;
                int g=__gcd(fz,fn);
                g=abs(g);
                fz/=g;
                fn/=g;
                if(fz!=1)
                {
                    cout<<fz<<"*";
                }
                cout<<"sqrt("<<d<<")";
                if(fn!=1)
                {
                    cout<<"/"<<fn;
                }
                 cout<<endl;   
            }
         
            
        //
        } 
    }
	return 0;
} 
2024/8/10 11:06
加载中...