60分求调
查看原帖
60分求调
803874
chenhx楼主2024/8/12 19:00
#include<bits/stdc++.h>
using namespace std;
int t,m;
void print(int fz,int fm){
	if(fz%fm==0){
		cout<<fz/fm;
	}else{
		int gcd=__gcd(abs(fz),abs(fm));
		if(fz>0&&fm>0){
			cout<<fz/gcd<<"/"<<fm/gcd;
		}else if(fz<0&&fm<0){
			cout<<-fz/gcd<<"/"<<-fm/gcd;
		}else{
			cout<<"-"<<abs(fz)/gcd<<"/"<<abs(fm)/gcd;
		}
	}
}
void print1(int fz,int fm){
	if(fz==0){
		cout<<0;
	}else{
		print(fz,fm);
	}
	cout<<endl;
}
void print2(int fz,int fm){
	if(fz==0){
		return;
	}else{
		print(fz,fm);
	}
	cout<<"+";
}
void print3(int fz,int fm){
	int xishu=0;
	for(int i=1;i*i<=fz;i++){
		if(fz%(i*i)==0){
			xishu=i;
		}
	}
	fz=fz/(xishu*xishu);
	fm=abs(fm);
	int gcd=__gcd(fm,xishu);
	fm/=gcd;
	xishu/=gcd;
	if(xishu==1){
		cout<<"sprt("<<fz<<")";
	}else{
		cout<<xishu<<"*"<<"sprt("<<fz<<")";
	}
	if(fm!=1){
		cout<<"/"<<fm;
	}
	cout<<endl;
}
void one(){
	int a,b,c;
	cin>>a>>b>>c;
	b=-b;
	int dlt=b*b-4*a*c;
	int aa=2*a;
	if(dlt<0){
		cout<<"NO"<<endl;
	}else if(dlt==0){
		print1(b,aa);
	}else if((int)sqrt(dlt)*(int)sqrt(dlt)==dlt){
		int bb=aa<0 ? b-sqrt(dlt) : b+sqrt(dlt);
		print1(bb,aa);
 	}else{
		print2(b,aa);
		print3(dlt,aa);
	}
}
int main(){
cin>>t>>m;
while(t--){
	one();
}
return 0;
}

2024/8/12 19:00
加载中...