求hack数据&请求加上大样例
查看原帖
求hack数据&请求加上大样例
718928
Mr_Egg楼主2023/10/30 21:53
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
	if(!b) return a;
	return gcd(b,a%b);
}
void printq(int p,int q){
	int t=gcd(abs(p),abs(q));
	p/=t,q/=t;
	if((p<0)^(q<0)) printf("-");
	printf("%d",abs(p));
	if(abs(q)!=1) printf("/%d",abs(q));
}
void printn(int q2,int d,int q3){
	q2=abs(q2),d=abs(d),q3=abs(q3);
	int t=gcd(q2,q3);
	q2/=t,q3/=t;
	if(q2!=1) printf("%d*",q2);
	printf("sqrt(%d)",d);
	if(q3!=1) printf("/%d",q3);
}
int main(){
	int t,m,a,b,c;
	scanf("%d%d",&t,&m);
	while(t--){
		scanf("%d%d%d",&a,&b,&c);
		int d=b*b-4*a*c;
		if(d<0){printf("NO\n");continue;};
		int q2=1;
		for(int i=1;i*i<=d;i++)
			if(d%(i*i)==0)
				q2=i;
		d/=(q2*q2);
		int p=-b,q=2*a;
		bool suc1=1,suc2=1;
		if(!p) suc1=0;
		else if(d==1&&a>0) printq(p+q2,q);
		else if(d==1&&a<0) printq(p-q2,q);
		else printq(p,q);
		if(!d) suc2=0;
		else if(d==1&&!suc1) printq(q2,q);
		else if(d!=1){
			if(suc1) printf("+");
			printn(q2,d,q);
		}
		if(!suc1&&!suc2) printf("0");
		printf("\n");
	}
	return 0;
}
2023/10/30 21:53
加载中...