WA90求调
查看原帖
WA90求调
1029484
SCJsuo楼主2024/7/22 19:59

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdlib>
using namespace std;
int a,b,c;
int t,m;
int sq[16000005];
int gcd(int x,int y)
{
	if(y==0) return x;
	return gcd(y,x%y);
}
void yls(int fz,int fm)
{
//	cout<<fz<<" "<<fm<<"\n";
	int g=gcd(abs(fm),abs(fz));
	fz/=g,fm/=g;
	if(fm<0)
		fm=-fm,fz=-fz;
	cout<<fz;
	if(fm!=1)
		cout<<"/"<<fm;
}
int main()
{
	cin>>t>>m;
	memset(sq,-1,sizeof(sq));
	for(int i=0;i<=4000;i++)
		sq[i*i]=i;
	
	while(t--)
	{
		cin>>a>>b>>c;
		int del=b*b-4*a*c;
		if(del<0)
		{
			cout<<"NO\n";
			continue;
		}
		if(sq[del]!=-1)
		{
			int x=sq[del]-b;
			if(a<0)
				x=-sq[del]-b;
			yls(x,2*a);
		}
		else
		{
			//-b/2a  +-  sq(del)/2a
			int ch=1;
			for(int i=1;i<=1000;i++)
				if(del%(i*i)==0) ch=i;
			del/=(ch*ch);
			if(-b!=0)
			{
				yls(-b,2*a);
				cout<<"+";
			}
			int a2=abs(2*a);
			int g=gcd(ch,a2);
			ch/=g,a2/=g;
			if(ch==1)
			{
				if(a2==1)
					cout<<"sqrt("<<del<<")";
				else
					cout<<"sqrt("<<del<<")/"<<a2;
			}
			else
			{
				if(a2==1)
					cout<<ch<<"*"<<"sqrt("<<del<<")";
				else
					cout<<ch<<"*"<<"sqrt("<<del<<")/"<<a2;
			}
		}
		cout<<endl;
	}
	return 0;
}
2024/7/22 19:59
加载中...