RE求调
查看原帖
RE求调
1260501
czx120716楼主2025/6/17 18:57
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,m,a,b,c,d;
ll hj(ll *x,ll *y){
	ll gcd=__gcd(abs(*x),abs(*y));
	*x/=gcd,*y/=gcd;
}signed main(){
	scanf("%lld %lld",&t,&m);
	while(t--){
		scanf("%lld %lld %lld",&a,&b,&c);
		d=b*b-4*a*c;
		if(d<0){printf("NO\n");continue;}
		else if(d==0){
			ll p=-b,q=2*a;
			hj(&q,&p);
			if(q<0) q=-q,p=-p;
			if(q==1) printf("%lld\n",p);
			else printf("%lld/%lld\n",p,q);
		}else{
			ll p=-b,q=2*a;
			ll pf=sqrt(d);
			if(pf*pf==d){
				if(a>0) p+=pf;
				else p-=pf;
				hj(&q,&p);
				if(q<0) q=-q,p=-p;
				if(q==1) printf("%lld\n",p);
				else printf("%lld/%lld\n",p,q);
			}else{
				hj(&p,&q);
				if(q<0) q=-q,p=-p;
				if(p!=0){
					if(q==1) printf("%lld+",p);
					else printf("%lld/%lld+",p,q);
				}q=abs(2*a);p=1;
				ll t;
				for(ll i=pf;i>=1;i--){
					if(d%(i*i)==0){
						p*=i;
						t=d/(i*i);
						break;
					}
				}hj(&q,&p);
				if(q<0) q=-q,p=-p;
				if(p!=1) printf("%lld*",p);
				printf("sqrt(%lld)",t);
				if(q!=1) printf("/%lld",q);
				printf("\n");
			}
		}
	}return 0;
}

到底是为什么呀?

2025/6/17 18:57
加载中...