样例没过,求助
查看原帖
样例没过,求助
1211039
byh123bc楼主2024/10/10 22:02

代码:

#include<bits/stdc++.h>
using namespace std;
int _gcd(int a,int b){//最大公因数
	return b?_gcd(b,a%b):a;
}
int genhaoqian,genhaohou;
int _find(int num){
	int l=1,r=1000,ans=1;
	while(l<=r){
		int mid=(l+r)/2;
		if(mid*mid<=num){
			ans=mid;
			l=mid+1;
		}else{
			r=mid-1;
		}
	}
	return ans;
}
void genhao(const int shanjiao){
	genhaoqian=_find(shanjiao);
	genhaohou=shanjiao-genhaoqian*genhaoqian;
}
bool qianfenshu(int a,int b){
	a*=2;
	if(b==0||a==0){
		return 0;
	}
	if(a<0){
		a=-a;
		b=-b;
	}
	
	int gcd=_gcd(a,b);
	if(gcd!=0){
		a/=gcd;
		b/=gcd;
	}if(a==1){
		cout<<-b;
	}else{
		cout<<-b<<"/"<<a;
	}
	return 1;
}
void houfenshu(bool qianfenshu_f,int a,int b,int c,const int shanjiao){
	genhao(shanjiao);
	if(genhaoqian==0){
		if(genhaohou==0){
			cout<<endl;
			return;
		}
		cout<<"+sqrt("<<genhaohou<<")";
		if(2*a==1){
			cout<<endl;
			return;
		}
		cout<<"/"<<2*a<<endl;
		return;
	}
	if(2*a<0){
		a=-a;
		genhaoqian=-genhaoqian;
	}
	int gcd=_gcd(abs(genhaoqian),abs(2*a));
	genhaoqian/=gcd;
	int ta=(a*2)/gcd;
	if(ta==1){
		cout<<genhaoqian/ta<<endl;
		return;
	}
	if(genhaohou==0){
		cout<<genhaoqian<<"/"<<ta<<endl;
	}
	else{
		cout<<genhaoqian<<"*sqrt("<<genhaohou<<")/"<<ta<<endl;
	}
}
void teshuchuli(int shanjiao,int a,int b,int fenzier){
	a*=2;
	if(b==0||a==0){
		cout<<"NO"<<endl;
		return;
	}
	if(a<0){
		a=-a;
		b=-b;
	}
	int tb=-b+fenzier;
	cout<<tb<<"/"<<a<<endl;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int a,b,c,t,m;
	cin>>t>>m;
	while(t--){
		cin>>a>>b>>c;
		int shanjiao=b*b-4*a*c,t=_find(shanjiao);
		if(shanjiao<0){
			cout<<"NO"<<endl;
			continue;
		}
		if(t*t==shanjiao){
			teshuchuli(shanjiao,a,b,t);
			continue;
		}
		bool qianfenshu_f=qianfenshu(a,b);
		if(shanjiao==0){
			cout<<endl;
			continue;
		}
		houfenshu(qianfenshu_f,a,b,c,shanjiao);
	}
	return 0;
}

求大佬解决,解决给关注,谢谢。

2024/10/10 22:02
加载中...