2 条题解

  • 0
    @ 2023-10-28 20:34:38
    #include<bits/stdc++.h>
    using namespace std ;
    long long t,m,a,b,c,de;
    long long gcd(long long x,long long y)
    {
    	if(y==0)return x;
    	else return gcd(y,x%y);
    }
    void doit(long long fz,long long fm)
    {
    	long long gcdd=abs(gcd(fz,fm));
    	fz/=gcdd;fm/=gcdd;
    	if(fm==1)cout<<fz;
    	else
    	cout<<fz<<"/"<<fm;
    }
    int main()
    {
    	freopen("uqe.in","r",stdin);
    	freopen("uqe.out","w",stdout); 
    	cin>>t>>m;
    	while(t--)
    	{
    		cin>>a>>b>>c;
    		de=b*b-4*a*c;
    		if(de<0)cout<<"NO";
    		else
    		{
    			long long zs=0;
    			for(long long i=1;i*i<=de;i++)
    			{
    				if(de%(i*i)==0)zs=i; 
    			}
    			if(zs*zs==de)
    			{
    				if(a>0)
    				{
    					long long fz=-b+zs,fm=2*a;
    					doit(fz,fm);
    				}
    				else
    				{
    					long long fz=b+zs,fm=-2*a;
    					doit(fz,fm);
    				}
    			}
    			else
    			{
    				long long fz,fm;
    				if(a>0)
    				fz=-b,fm=2*a;
    				else fz=b,fm=-2*a;
    				if(fz!=0)
    				{
    					doit(fz,fm);
    					cout<<"+";
    				}
    				long long r=de/(zs*zs);
    				if(a>0)
    				fz=zs,fm=2*a;
    				else fz=zs,fm=-2*a;
    				long long gcdd=gcd(fz,fm);
    				fz/=gcdd,fm/=gcdd;
    				if(fm==1)
    				{
    					if(fz==1)cout<<"sqrt("<<r<<")";
    					else cout<<fz<<"*sqrt("<<r<<")";
    				}
    				else if(fz==1)cout<<"sqrt("<<r<<")/"<<fm;
    				else cout<<fz<<"*sqrt("<<r<<")/"<<fm;
    	
    			}
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    信息

    ID
    1349
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    17
    已通过
    6
    上传者