WA 10求调!!!
查看原帖
WA 10求调!!!
856459
yangjunhan1楼主2023/11/1 22:36
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int t,m,a,b,c,dt,q2,q1gcd,q2gcd,cq1,cq2,c2a1,c2a2;
bool jj;
int gcd(int a,int b){
	return b==0?a:gcd(b,a%b);
}
int cf(int x){
	if((int)sqrt(x)*(int)sqrt(x)==x){
		return sqrt(x);
	}
	int s=1;
	for(int i=2;i<=sqrt(x);i++){
		while(x%(i*i)==0){
			s*=i;
			x/=(i*i);
		}
	}
	return s;
}
int main(){
//	freopen("uqe.in","r",stdin);
//	freopen("uqe.out","w",stdout);
	cin>>t>>m;
	while(t--){
		jj=0;
		if(a<0)	jj=1;
		cin>>a>>b>>c;
		dt=b*b-4*a*c;
		if(dt<0){
			cout<<"NO"<<endl;
			continue;
		}
		q1gcd=gcd(-b,2*a);
		cq1=(-b)/q1gcd;
		c2a1=2*a/q1gcd;
		if(c2a1<0){
			cq1*=-1;
			c2a1*=-1;
		}
		q2=cf(dt);;
		if(q2)	dt/=(q2*q2);
		q2gcd=gcd(q2,2*a);
		cq2=q2/q2gcd;
		c2a2=2*a/q2gcd;
		if(c2a2<0){
			cq2*=-1;
			c2a2*=-1;
		}
		if(dt==1){
			int zgcd=gcd(-b+q2,2*a);
			if(jj)	zgcd=gcd(-b-q2,2*a);
			int cz=(-b+q2)/zgcd,c2az=2*a/zgcd;
			if(c2az<0){
				cz*=-1;
				c2az*=-1;
			}
			cout<<cz;
			if(c2az!=1)	cout<<"/"<<c2az;
		}
		else if(q2==0){
			cout<<cq1;
			if(c2a1!=1)	cout<<"/"<<c2a1;
		}
		else{
			if(cq1!=0){
				cout<<cq1;
				if(c2a1!=1)	cout<<"/"<<c2a1;
				if(cq2>0){
					if(!jj)	cout<<"+";
					else	cout<<"-";
				}
				else{
					if(!jj)	cout<<"-";
					else	cout<<"+";
				}
			}
			if(dt){
				if(abs(cq2)!=1)	cout<<abs(cq2)<<"*";
				cout<<"sqrt("<<dt<<")";
				if(c2a2!=1)	cout<<"/"<<c2a2;
			}
		}
		cout<<endl;
	}
	return 0;
}
2023/11/1 22:36
加载中...