60求助
查看原帖
60求助
1401205
wsgly986280楼主2024/7/22 16:31

本人代码:

#include<bits/stdc++.h>
using namespace std;
int m,t,a[5001],b[5001],c[5001],i,dt,j,jq2=1,t2=1;
void nuqe(int a,int b,int c)
{
	int gys1,gys2;
	dt=b*b-4*a*c;
	while(t2!=0)
	{
		t2=0;
		for(j=2;j<=sqrt(dt);j++)
	    if(dt%(j*j)==0)
	    {
	    	dt/=(j*j);
	    	jq2*=j;
	    	t2=1;
		}
	}
	gys1=__gcd((-1*b),(2*a));
	gys2=__gcd(jq2,(2*a));
	if(b!=0&&(-1*b)%(2*a)!=0)
	    if(2*a/gys1>=0)
	        cout<<(-1*b)/gys1<<"/"<<(2*a)/gys1<<"+";
	    else
	        cout<<"-"<<(-1*b)/gys1<<"/"<<-1*(2*a)/gys1<<"+";
	else
		if(b!=0)
		    cout<<-1*b/2/a<<"+";
	if(jq2%(2*a)!=0&&jq2/gys2!=1)
		if((2*a)/gys2>=0)
	    	cout<<jq2/gys2<<"*sqrt("<<dt<<")/"<<(2*a)/gys2<<endl;
	    else
	        cout<<"-"<<jq2/gys2<<"*sqrt("<<dt<<")/"<<-1*(2*a)/gys2<<endl;
	else
	    if(jq2%(2*a)!=0)
	        if((2*a)/gys2>=0)
	        	cout<<"sqrt("<<dt<<")/"<<(2*a)/gys2<<endl;
	        else
	        	cout<<"-"<<"sqrt("<<dt<<")/"<<-1*(2*a)/gys2<<endl;
	    else
			cout<<jq2/gys2<<"*sqrt("<<dt<<")"<<endl;
}
void fuqe(int a,int b,int c)
{
	int gys;
	if(floor(sqrt(b*b-4*a*c))==sqrt(b*b-4*a*c))
	{
        dt=b*b-4*a*c;
		if(((-1*b+(int)(sqrt(dt)))%(2*a))==0)
		    cout<<(-1*b+sqrt(dt))/(2*a)<<endl;
		else
		{
			gys=__gcd((-1*b+(int)(sqrt(dt))),(2*a));
			if((2*a)/gys>=0)
				cout<<(-1*b+sqrt(dt))/gys<<"/"<<(2*a)/gys<<endl;
			else
			    cout<<"-"<<(-1*b+sqrt(dt))/gys<<"/"<<-1*(2*a)/gys<<endl;
		}
	}
	else
	    nuqe(a,b,c);
}
void uqea(int a,int b,int c)
{
	if(b*b-4*a*c<0)
	    cout<<"NO"<<endl;
	else
	{
		if(a<0)
		{
			a=-1*a;
			b=-1*b;
			c=-1*c;
		}
		fuqe(a,b,c);
	}
}
int main()
{
	freopen("uqe.in","r",stdin);
	freopen("uqe.out","w",stdout);
	cin>>t>>m;
	for(i=1;i<=t;i++)
	{
	    cin>>a[i]>>b[i]>>c[i];
		uqea(a[i],b[i],c[i]);
		jq2=1;
	}
	return 0;
}
2024/7/22 16:31
加载中...