50求调
查看原帖
50求调
611170
Tsumiki_Mikan楼主2024/6/15 19:30

rt,代码丑陋,到底是谁发明的大模拟这种东西啊让我这种码力为0的阴暗蒟蒻怎么活

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
	return b?gcd(b,a%b):a;
}
int T,m,a,b,c,l,p,q,v,A[1020],xs,xs2,wflbb;
int main(){
	cin>>T>>m;
	for(;T>=1;T--){
		cin>>a>>b>>c,l=b*b-4*a*c;
	    if(l<0){
	    	cout<<"NO\n";
	    	continue;
		}
		if(int(sqrt(l))*int(sqrt(l))==l){
			p=sqrt(l)-b,q=2*a,v=gcd(p,q),p=p/v,q=q/v;
			if((-sqrt(l)-b)/(2*a)>p/q) p=-sqrt(l)-b,q=2*a,v=gcd(p,q),p=p/v,q=q/v;
			if(p*q<0) cout<<'-';
			cout<<abs(p);
			if(q!=1) cout<<"/"<<abs(q);
			cout<<endl;
		}
		else{
			int i=2;
			memset(A,0,sizeof(A)),xs=1,xs2=1,wflbb=1;
			while(l>1){
				wflbb=i;
				while(l%i==0) l/=i,A[i]++;
				i++;
			}
			for(int i=2;i<=wflbb;i++){
				if(A[i]==0) continue;
				xs=xs*pow(i,A[i]/2);
				if(A[i]%2) xs2*=i;
			}		
			v=gcd(-b,2*a),p=-b/v,q=2*a/v;
			if(p){
				if(p*q<0) cout<<"-";
				cout<<abs(p);
				if(abs(q)!=1) cout<<"/"<<abs(q);
				cout<<"+";
			}
			p=xs,v=gcd(p,2*a),p=p/v,q=2*a/v;
			if(abs(p)!=1) cout<<abs(p)<<"*";
			cout<<"sqrt("<<xs2<<")";
			if(q!=1) cout<<"/"<<abs(q);
			cout<<endl;
		}
	}
}
2024/6/15 19:30
加载中...