提交后WA,样例、下载测试点AC
查看原帖
提交后WA,样例、下载测试点AC
656774
ZhangWeiYue0203楼主2024/10/13 21:57

本地测试的时候都是正确的,提交评测之后都是WA,下载了测试点以后答案也正确


评测记录


代码

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

int t,m;

ll gcd(ll m,ll n){
	return n==0?m:gcd(n,m%n);
}

void qnumio(ll p,ll q){
	if(p*q>=0){
		ll gcdn=gcd(max(p,q),min(p,q));
		if(q/gcdn==1){
			printf("%lld",p/gcdn);
		}else{
			printf("%lld/%lld",p/gcdn,q/gcdn);
		}
	}else if(p*q<0){
		p=abs(p);q=abs(q);
		ll gcdn=gcd(max(p,q),min(p,q));
		if(q/gcdn==1){
			printf("-%lld",p/gcdn);
		}else{
			printf("-%lld/%lld",p/gcdn,q/gcdn);
		}
	}
	return;
}

ll func(ll r,int k){
	ll res=1,num=r;
	for(ll i=sqrt(r);i>1;i--){
		if(num%(i*i)==0){
			res*=i;
			num/=i*i;
		}
	}
	if(k==1){
		return res;
	}else{
		return num;
	}
}

int main(){
	//freopen("0000a-uqe2.in","r",stdin);
	//freopen("0000a-uqe2-out.out","w",stdout);
	scanf("%lld %lld",&t,&m);
	for(int con=0;con<t;con++){
		ll a,b,c;
		scanf("%lld %lld %lld",&a,&b,&c);
		if(a<0){
			a=-a;b=-b;c=-c;
		}
		ll dlt=b*b-4*a*c;
		if(dlt<0){
			printf("NO");
		}else{
			if(ll(sqrt(dlt))*ll(sqrt(dlt))==dlt){
				ll p=-b+sqrt(dlt),q=2*a;
				if(p==0){
					printf("0");
				}else{
					qnumio(p,q);
				}
			}else{
				ll p1=-b,q=2*a;
				if(p1!=0){
					qnumio(p1,q);	//out quality part
					printf("+");
				}
				ll p2=func(dlt,1),r=func(dlt,2);
				ll gcd1=gcd(max(p2,q),min(p2,q));
				if(p2/gcd1!=1){
					printf("%lld*",p2/gcd1);
				}
				printf("sqrt(%lld)",r);
				if(q/gcd1!=1){
					printf("/%lld",q/gcd1);
				}
			}
		}
		printf("\n");
	}
	return 0;
}
2024/10/13 21:57
加载中...