10分求调
查看原帖
10分求调
1229128
lyx1234567楼主2024/10/24 19:18

#include "stdio.h"
#include "math.h"
int a[5010],b[5010],c[5010],q1,q2,q3;
int gcd(int a,int b){
	if(b==0){
		return a;
	}else{
		return gcd(b,a%b);
	}
}
int sq(int a){
	for(int i=2;i<=sqrt(a);i++){
		if(a%(int)pow(i,2)==0){
			return i;
		}
	}
	return 1;
}
void printQ(int a,int b){
	if(a>0 && b<0 || a<0 && b>0){
		printf("-");
		printQ(abs(a),abs(b));
	}else if(a==0 || b==0){
		printf("0");
	}else{
		if(gcd(a,b)==1){
			if(a%b==0){
				printf("%d",a/b);
			}else{
				printf("%d/%d",a,b);
			}
		}else{
			if(a%b==0){
				printf("%d",a/b);
				return;
			}
			printQ(a/gcd(a,b),b/gcd(a,b));
		}
	}	
}
void printR(int a,int b){
	if(sq(a)!=1){
		q2*=sq(a);
		printR(a/pow(sq(a),2),b);
	}else{
		if(q2==q3){
			printf("sqrt(%d)\n",a);
		}else{
			if(q2%q3==0){
				printf("%d*sqrt(%d)\n",q2/q3,a);
			}else if(q3%q2==0){
				printf("sqrt(%d)/%d\n",a,q3/q2);
			}else{
				printf("%d*sqrt(%d)/%d\n",q2/gcd(q2,q3),a,q3/gcd(q2,q3));
			}
		}
	}
}
int main(){
	int t,m;
	scanf("%d%d",&t,&m);
	for(int i=0;i<t;i++){
		scanf("%d%d%d",&a[i],&b[i],&c[i]);
	}
	for(int i=0;i<t;i++){
		int delta=(int)(pow(b[i],2))-a[i]*c[i]*4;
		if(delta<0){
			printf("NO\n");
		}else{
			if(sqrt(delta)==(int)(sqrt(delta))){
				printQ(-b[i]+(int)(sqrt(delta)),2*a[i]);
				printf("\n");
			}else{
				q1=-b[i]/(2*a[i]);q2=1;q3=2*a[i];
				if(-b[i]!=0){
					printQ(-b[i],2*a[i]);
					printf("+");
				}
				printR(delta,2*a[i]);
			}
		}
	}
	return 0;
}
2024/10/24 19:18
加载中...