悬赏关注,WA#2~#10,样例全过
查看原帖
悬赏关注,WA#2~#10,样例全过
755660
123456zzr楼主2023/11/4 11:39
#include<bits/stdc++.h>
using namespace std;
int a,b,c,t,delta,m;
int gcd(int a,int b);
int main()
{
	cin>>t>>m;
	for(int ti=1;ti<=t;ti++)
	{
		cin>>a>>b>>c;
		delta=b*b-4*a*c;
		if(delta<0)
		{
			cout<<"NO"<<endl;
			continue;
		}
		if(int(sqrt(delta))==sqrt(delta))
		{
			//youli
			delta=sqrt(delta);
			int fz=-b+delta;
			int fm=2*a;
			double ffk=1.0*fz/fm;//ff=符号
			int ff;
			if(ffk<0)
			{
				ff=-1;
			 }else
			 {		
			 	ff=1;
			 }
			fz=abs(fz);
			fm=abs(fm);
			int gg=gcd(fz,fm);//gg=公分母 
			fz/=gg;
			fm/=gg;
			cout<<ff*fz;
			if(fm>1&&fz!=0)
			{
				cout<<"/"<<fm;
			}cout<<endl;
		}else
		{
			int fz1=-b;
			int fz2=1;
			int i=sqrt(delta);
			for(;i>=2;i--)
			{
				if(delta%(i*i)==0)
				{
					delta/=(i*i);
					fz2*=i;
				}	
			}
			int fm1=2*a,fm2=fm1;
			double ff1k=1.0*fz1/fm1;
			int ff1;
			if(ff1k<0)
			{
				ff1=-1;
			}else
			{
				ff1=1;
			}
			fm1=abs(fm1);
			fz1=abs(fz1);
			int gg1=gcd(fz1,fm1);
			fz1/=gg1;
			fm1/=gg1;
			if(fz1!=0)
			cout<<fz1*(ff1);
			if(fz1!=0&&fm1>1)
			{
				cout<<"/"<<fm1;
			}
			if(fz1>0)
			{
				cout<<"+";
			}
			fm2=abs(2*a);
			int gg2=gcd(fz2,fm2);
			fz2/=gg2;
			fm2/=gg2;
			if(fz2>1)
			{
				cout<<fz2<<"*";
			}cout<<"sqrt("<<delta<<")";
			if(fm2>1)
			{
				cout<<"/"<<fm2;
			}
			cout<<endl;
			//wuli
		}
	}
	return 0;
}
int gcd(int a,int b)
{
	int r=a%b;
	if(r==0)
	{
		return b;
	}	
	return gcd(b,r);
}
2023/11/4 11:39
加载中...