20pts求助
查看原帖
20pts求助
1020096
LiHR_210222楼主2023/11/24 21:56
#include <bits/stdc++.h>
using namespace std;

int t,m,a,b,c,dt,ans;

int gcd(int a,int b){
	return b?gcd(b,a%b):a;
}
void turnR(int x,int y){
	if(y==1){
		cout<<x;
	}
	else if(y==-1){
		cout<<-x;
	}
	else if(x==0){
		cout<<'0';
	}
	else{
		int d=gcd(abs(x),abs(y));
		if(y/d==1)cout<<x/d;
		else if(y/d==-1)cout<<-x/d;
		else if(x*y>0)cout<<abs(x/d)<<'/'<<abs(y/d);
		else cout<<'-'<<abs(x/d)<<'/'<<abs(y/d);
	}
	return;
}

void turnSQ(int x){
	double q2;
	int d=1;
	for(int i=1;i*i<=x;i++){
		if(x%(i*i)==0){
			q2=i;
		}
	}
	x/=q2*q2;
	q2/=abs(2*a);
	if(q2==1)
		cout<<"sqrt("<<x<<')';
	else if(int(q2)==q2)
		cout<<q2<<'*'<<"sqrt("<<x<<')';
	else if(int(1/q2)==1/q2)
		cout<<"sqrt("<<x<<")/"<<(1/q2);
	else{
		while(1){
			if(int(q2*d)==q2*d){
				cout<<q2*d<<'*'<<"sqrt("<<x<<")/"<<d;
				break;	
			}
			else
				d++;
		}
	}
	return;
}

int main(){
	//freopen("uqe2.in","r",stdin);
//	freopen("uqe.out","w",stdout);
    cin>>t>>m;
    while(t--){
        cin>>a>>b>>c;
        dt=b*b-4*a*c;
        if(dt<0)
			cout<<"NO";
        if(dt==0)
        	turnR(-b,2*a);
        if(dt>0){
        	if(a>0){
			if(int((-b+sqrt(dt))/(2*a))==(-b+sqrt(dt))/(2*a)){
				cout<<(-b+sqrt(dt))/(2*a);
				}
				else if(int(sqrt(dt))==sqrt(dt))
				turnR(-b+sqrt(dt),2*a);
			else{
				if(b==0){
					turnSQ(dt);
				}
				else{
					turnR(-b,2*a);
					cout<<'+';
					turnSQ(dt);	
				}
				}
			}
			if(a<0){
			if(int((-b-sqrt(dt))/(2*a))==(-b-sqrt(dt))/(2*a)){
				cout<<(-b-sqrt(dt))/(2*a);
				}
				else if(int(sqrt(dt))==sqrt(dt))
				turnR(-b-sqrt(dt),2*a);
			else{
				if(b==0){
					turnSQ(dt);
				}
				else{
					turnR(-b,2*a);
					cout<<'+';
					turnSQ(dt);	
				}
				}
			}
		}
		if(t!=0)
		cout<<endl;
	}
    return 0;
}

如题,#1#3AC,其他全部WA

2023/11/24 21:56
加载中...