求hack数据
查看原帖
求hack数据
1069057
zzy10124楼主2024/7/26 15:37
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,m;
signed main(){
	cin>>t>>m;
	while(t--){
		int a,b,c;
		cin>>a>>b>>c;
		int cnt=b*b-4*a*c;
		if(cnt<0)cout<<"NO"<<endl;
		else{
			if(floor(sqrt((double)cnt))*floor(sqrt((double)cnt))==cnt){
				int k=sqrt((double)cnt),p=max(-b-k,-b+k),q=2*a,w=__gcd(p,q);
				if(q<0)p=min(-b-k,-b+k);
				p=p/w,q=q/w;
				if(q<0)p=-p,q=-q;
				if(q==1)cout<<p<<endl;
				else cout<<p<<"/"<<q<<endl;
			}else{
			//	cout<<"△="<<cnt<<endl;
				double q1=-b;
				double q2;
				for(int i=sqrt(cnt);i*i>=1;i--){
					if(cnt%(i*i)==0){q2=(double)(i);break;}
				}
		
			//	cout<<"q1="<<q1<<" q2="<<q2<<endl;
				
				double r=(double)cnt/q2/q2;
				if(q1!=0){
					if(floor(q1/(2*a))*(2*a)==q1)cout<<q1/(2*a)<<"+";
					else{
						if(2*a<0)cout<<-q1<<"/"<<-2*a<<"+";
						else cout<<q1<<"/"<<2*a<<"+";
					}
				}q2=q2/(2*a);double q3=1.0/q2;
				if(q2==1)cout<<"sqrt("<<r<<")"<<endl;
				else if(floor(q2)==q2)cout<<q2<<"*sqrt("<<r<<")"<<endl;
				else if(floor(q3)==q3)cout<<"sqrt("<<r<<")/"<<q3<<endl;
				else{
					while(floor(q2)!=q2)q2*=10,c*=10;	
					int d=c;
					c=(int)q2;
					int s=__gcd(c,d);
					c=c/s;
					d=d/s;
					cout<<c<<"*sqrt("<<r<<")/"<<d<<endl;
				}
			}
		}
	}
	return 0;	
}

WA50

2024/7/26 15:37
加载中...