又臭又长 全WA求调awa
查看原帖
又臭又长 全WA求调awa
788627
Ydoc770楼主2024/7/9 22:45
#include<bits/stdc++.h>
using namespace std;


int gcd(int aa,int bb){
	int mx=1;
	for(int i=2;i<=min(aa,bb);i++){
		if(aa%i==0&&bb%i==0) mx=i;
	}
	return mx;
}


int sv(int aa){
	int mx=1;
	for(int i=2;i<=sqrt(aa);i++){
		if(aa%(i*i)==0) mx=i;
	}
	return mx;
}


int pd(int aa,int bb){
	if(aa>0&&bb<0||aa<0&&bb>0) return -1;
	return 1;
}
int main(){
	int t,m;
	cin>>t>>m;
	for(int i=1;i<=t;i++){
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		int p=b*b-4*a*c;
		
		
		if(p<0){
			cout<<"NO";
			continue;
		}
		
		
		if(b==0){
			if(p==0){
				cout<<0;
				continue;
			}
			if(p!=0){
				int e=sv(p),f=p/(e*e),g=2*a;
				int h=gcd(abs(e),abs(g));
				e/=h;
				g/=h;
				if(f==1){
					if(g==1||g==-1){
						printf("%d",pd(e,g)*abs(e));
						continue;
					}
					else{
						printf("%d/%d",pd(e,g)*abs(e),abs(g));
						continue;
					}		
				}	
				if(f!=1){
					if(g==1||g==-1){
						if(e!=1&&e!=-1){
							printf("%d*sqrt(%d)",pd(e,g)*abs(e),f);
							continue;
						}
						else{
							if(pd(e,g)==-1) printf("-");
							printf("sqrt(%d)",f);
							continue;
						}
					}
					else{
						if(e!=1&&e!=-1){
							printf("%d*sqrt(%d)/%d",pd(e,g)*abs(e),f,abs(g));
							continue;
						}
						else{
							if(pd(e,g)==-1) printf("-");
							printf("sqrt(%d)/%d",f,abs(g));
							continue;
						}
					}
				}
			}
		}
		
		
		if(b!=0){
			int d=2*a;
			int q=gcd(abs(b),abs(d));
			b/=q;d/=q;
			if(p==0){
				if(d==1||d==-1){
					printf("%d",pd(b*(-1),d)*abs(b*(-1)));
					continue;
				}
				else{
					printf("%d/%d",pd(b*(-1),d)*abs(b*(-1)),abs(d));
					continue;
				}
			}
			if(p!=0){
				int e=sv(p),f=p/(e*e),g=2*a;
				int h=gcd(abs(e),abs(g));
				e/=h;
				g/=h;
				if(f==1){
					int k=e-b;
					int j=gcd(abs(k),abs(g));
					k/=j;
					g/=j;
					if(g==1||g==-1){
						printf("%d",pd(k,g)*abs(k));
						continue;
					}
					else{
						printf("%d/%d",pd(k,g)*abs(k),abs(g));
						continue;
					}
				}
				
				
				if(f!=1){
					if(d==1||d==-1){
						printf("%d",pd(b*(-1),d)*abs(b*(-1)));
					}
					else{
						printf("%d/%d",pd(b*(-1),d)*abs(b*(-1)),abs(d));
					}
					
					
					if(pd(e,g)==1) printf("+");
					if(pd(e,g)==-1) printf("-");
					
					
					if(g==1||g==-1){
						if(e!=1&&e!=-1){
							printf("%d*sqrt(%d)/%d",abs(e),f,abs(g));
							continue;
						}
						else{
							printf("sqrt(%d)/%d",f,abs(g));
							continue;
						}
					}
					else{
						if(e!=1&&e!=-1){
							printf("%d*sqrt(%d)/%d",abs(e),f,abs(g));
							continue;
						}
						else{
							printf("sqrt(%d)/%d",f,abs(g));
							continue;
						}
					}
				}
			}
		}
	}	
}
2024/7/9 22:45
加载中...