wa 60求助
查看原帖
wa 60求助
748723
wang_ly_ly楼主2023/11/1 17:03

wa 60求助

#include<iostream>
#include<cstdio>
#include<string.h>
#include<cmath>
using namespace std;
long long Gcd(long long x,long long y){
	if(x<y)swap(x,y);
	if(x%y==0)return y;
	return Gcd(y,x%y);
}
void S(long long b,long long a){
    if(a*b==0){
        cout<<0;
        return;
    }
	if(abs(b)%abs(2*a)==0)cout<<b/2/a;
	else{
		if(b*a>0)cout<<abs(b/Gcd(abs(b),abs(a*2)))<<"/"<<abs(2*a/Gcd(abs(b),abs(2*a)));
		else cout<<-abs(b/Gcd(abs(b),abs(a*2)))<<"/"<<abs(2*a/Gcd(abs(b),abs(2*a)));
	}
}
long long fj(long long x){
	long long ans=1;
	for(long long i=2;i*i<=x;i++){
		while(x%(i*i)==0){
			ans*=i;
			x/=i*i;
		}
	}
	return ans;
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	long long t,m;
	cin>>t>>m;
	while(t--){
		long long a,b,c;
		cin>>a>>b>>c;
		long long k=b*b-4*a*c;
		if(k<0){
			cout<<"NO\n";
			continue;
		}
		if(k==0){
			S(-b,a);
			cout<<"\n";
			continue;
		}
		double x=sqrt(k);
		if(x*x==k){
			if((-b+x)*1.0/a*1.0>(-b-x)*1.0/a*1.0)S((-b+x),a);
			else S((-b-x),a);
			cout<<"\n";
			continue;
		}
		if(b!=0){
			S(-b,a);
			cout<<"+";
		}
		long long w=fj(k);
		if(w>1){
			if(w%(2*a)==0){
				if(w==2*a)cout<<"sqrt("<<k/w/w<<")\n";
				else cout<<abs(w/2/a)<<"*sqrt("<<k/w/w<<")\n";
			}
			else cout<<abs(w/Gcd(w,abs(2*a)))<<"*sqrt("<<abs(k/w/w)<<")/"<<abs(abs(a*2)/Gcd(w,abs(a*2)))<<"\n";
		}
		else cout<<"sqrt("<<k<<")/"<<a*2;
	}
	return 0;
}

如果能造出错误数据也行

2023/11/1 17:03
加载中...