求调,70pts,WA2,9,10
查看原帖
求调,70pts,WA2,9,10
1147171
Merge_all楼主2024/7/12 20:38
#include<bits/stdc++.h>
#define rg register
#define il inline
#define gc() getchar()
#define fi first
#define se second
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define rep(i,a,b) for(rg int i=(a);i<=(b);i++)
#define _for(i,a,b) for(rg int i=(a);i>=(b);i--)
namespace Things{
	il int read(){
		int x=0,f=1;
		char ch=gc();
		while(!isdigit(ch)){if(ch=='-') f=-1;ch=gc();}
		while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=gc();}
		return x*f;
	}
	il int quick_mul(int a,int n,int p){
		int ans=0;
		while(n){
			if(n&1) ans=(ans+a)%p;
			a=(a+a)%p;
			n>>=1;
		}
		return ans;
	}
	il int quick_pow(int a,int n,int p){
		int ans=1;
		while(n){
			if(n&1) ans=quick_mul(ans,a,p);
			a=quick_mul(a,a,p);
			n>>=1;
		}
		return ans;
	}
	il int gcd(int a,int b){
		if(!b) return a;
		return gcd(b,a%b);
	}
}
using namespace Things;
using namespace std;
const int N=200010,M=2010,inf=0x3f3f3f3f,mod=1e9+7;
const double PI=acos(-1),eps=1e-8;
typedef long long LL;
typedef pair<int,int> PII;

int T,MM;
int a,b,c;//x^2,x,C,的系数
int Dirta;

void solve(){
	cin>>a>>b>>c;
	Dirta=b*b-4*a*c;
	if(Dirta<0){
		cout<<"NO\n";
		return ;
	}
	int xishu=1;
	for(int i=ceil(sqrt(Dirta));i>=1;i--){
		if(Dirta%(i*i)==0){
			xishu=i;
			break;
		}
	}
	Dirta/=(xishu*xishu);
	int fenzi=-1*b;
	int fenmu=2*a;
//	cout<<"Dirta="<<Dirta<<"\n";
	if(Dirta==0){
		if(abs(fenzi)%abs(fenmu)==0){
			cout<<fenzi/fenmu<<"\n";
			return ;
		}
		else{
			int gcd_=gcd(fenzi,fenmu);
			fenzi/=gcd_;
			fenmu/=gcd_;
			if(fenzi==0){
				cout<<"0\n";
				return ;
			}
			if(fenzi<0&&fenmu<0){
				cout<<abs(fenzi)<<"/"<<abs(fenmu)<<"\n";
				return ;
			}
			if(fenzi>0&&fenmu<0){
				cout<<"-"<<fenzi<<"/"<<abs(fenmu)<<"\n";
				return ;
			}
			cout<<fenzi<<"/"<<fenmu<<"\n";
			return ;
		}
	}
	if((-1*b+sqrt(Dirta))/(2*a)>=(-1*b-sqrt(Dirta))/(2*a)){
		if(Dirta==1){
			fenzi+=xishu;
			int gcd_=gcd(fenzi,fenmu);
			fenzi/=gcd_;
			fenmu/=gcd_;
			if(abs(fenzi)%abs(fenmu)==0){
				cout<<fenzi/fenmu<<"\n";
				return ;
			}
			else{
				if(fenzi==0){
					cout<<"0\n";
					return ;
				}
				if(fenzi<0&&fenmu<0){
					cout<<abs(fenzi)<<"/"<<abs(fenmu)<<"\n";
					return ;
				}
				if(fenzi>0&&fenmu<0){
					cout<<"-"<<fenzi<<"/"<<abs(fenmu)<<"\n";
					return ;
				}
				cout<<fenzi<<"/"<<fenmu<<"\n";
				return ;
			}
		}
		else{
			if(fenmu<0){
				fenmu=abs(fenmu);
				fenzi=-fenzi;
			}
			int gcd__=gcd(fenzi,fenmu);
			if(fenzi!=0){
				if(abs(fenzi)%abs(fenmu)==0){
					cout<<fenzi/fenmu<<"+";
				}
				else{
					if(fenzi/gcd__<0&&fenmu/gcd__<0){
						cout<<abs(fenzi/gcd__)<<"/"<<abs(fenmu/gcd__)<<"+";
					}
					else if(fenzi/gcd__>0&&fenmu/gcd__<0){
						cout<<"-"<<fenzi/gcd__<<"/"<<abs(fenmu/gcd__)<<"+";
					}
					else cout<<fenzi/gcd__<<"/"<<fenmu/gcd__<<"+";
				}
			}
			gcd__=gcd(fenmu,xishu);
			if(fenmu/gcd__==1){
				if(xishu/gcd__==1) cout<<"sqrt("<<Dirta<<")"<<"\n";
				else cout<<xishu/gcd__<<"*sqrt("<<Dirta<<")"<<"\n";
			}
			else{
				if(xishu/gcd__==1) cout<<"sqrt("<<Dirta<<")/"<<fenmu/gcd__<<"\n";
				else cout<<xishu/gcd__<<"*sqrt("<<Dirta<<")/"<<fenmu/gcd__<<"\n";
			}
			return ;
		}
	} 
	else{
		if(Dirta==1){
			fenzi-=xishu;
			int gcd_=gcd(fenzi,fenmu);
			fenzi/=gcd_;
			fenmu/=gcd_;
			if(abs(fenzi)%abs(fenmu)==0){
				cout<<fenzi/fenmu<<"\n";
				return ;
			}
			else{
				if(fenzi==0){
					cout<<"0\n";
					return ;
				}
				if(fenzi<0&&fenmu<0){
					cout<<abs(fenzi)<<"/"<<abs(fenmu)<<"\n";
					return ;
				}
				if(fenzi>0&&fenmu<0){
					cout<<"-"<<fenzi<<"/"<<abs(fenmu)<<"\n";
					return ;
				}
				cout<<fenzi<<"/"<<fenmu<<"\n";
			}
		}
		else{
			if(fenmu<0){
				fenmu=abs(fenmu);
				fenzi=-fenzi;
			}
			int gcd__=gcd(fenzi,fenmu);
			if(fenzi!=0){
				if(abs(fenzi)%abs(fenmu)==0){
					cout<<fenzi/fenmu<<"-";
				}
				else{
					if(fenzi/gcd__<0&&fenmu/gcd__<0){
						cout<<abs(fenzi/gcd__)<<"/"<<abs(fenmu/gcd__)<<"-";
					}
					else if(fenzi/gcd__>0&&fenmu/gcd__<0){
						cout<<"-"<<fenzi/gcd__<<"/"<<abs(fenmu/gcd__)<<"-";
					}
					else cout<<fenzi/gcd__<<"/"<<fenmu/gcd__<<"-";
				}
			}
			gcd__=gcd(fenmu,xishu);
			if(fenmu/gcd__==1){
				if(xishu/gcd__==1) cout<<"sqrt("<<Dirta<<")"<<"\n";
				else cout<<xishu/gcd__<<"*sqrt("<<Dirta<<")"<<"\n";
			}
			else{
				if(xishu/gcd__==1) cout<<"sqrt("<<Dirta<<")/"<<fenmu/gcd__<<"\n";
				else cout<<xishu/gcd__<<"*sqrt("<<Dirta<<")/"<<fenmu/gcd__<<"\n";
			}
			return ;
		}
	}
}

signed main(){
	//freopen(".in","r",stdin);freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>T>>MM;
//	int I=1;
	while(T--){
//		cout<<"--------------\nTest="<<I<<"\n";
		solve();
//		I++;
	}
	return 0;
}
/*
1 9000
1 -1 0
*/
2024/7/12 20:38
加载中...