CSP-J T3,过了样例,却WA,为什么?
  • 板块学术版
  • 楼主Fu_Da_Ying
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/10/23 20:36
  • 上次更新2023/11/2 11:40:20
查看原帖
CSP-J T3,过了样例,却WA,为什么?
746444
Fu_Da_Ying楼主2023/10/23 20:36

代码:

#include<bits/stdc++.h>
using namespace std;
long long t=0,m=0,a=0,b=0,c=0;
int _gcd(int n,int m){
	if(n<m){
		swap(n,m);
	}
	if(m==0){
		return n;
	}
	return _gcd(m,n%m);
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>t>>m;
	while(t--){
		cin>>a>>b>>c;
		long long duita=b*b-4*a*c;
		if(duita<0){
			cout<<"NO\n";
			continue;
		}
		if(int(sqrt(duita))*int(sqrt(duita))==duita){
			long long p=0-b+sqrt(duita),q=2*a,gcd=_gcd(abs(p),abs(q));
			p/=gcd,q/=gcd;
			if(q==1){
				cout<<p<<"\n";
			}else{
				if(p<0||q<0){
					if(p<0&&q<0){
						cout<<abs(p)<<"/"<<abs(q)<<"\n";
					}else{
						cout<<0-abs(p)<<"/"<<abs(q)<<"\n";
					}
				}
				else{
				    cout<<p<<"/"<<q<<"\n";
		        }
			}
		}else{
			long long p=0-b,q=2*a,gcd=_gcd(abs(p),abs(q));
			p/=gcd,q/=gcd;
			if(q==1&&p!=0){
				cout<<p<<"+";
		    }else if(p!=0&&q!=0){
				if(p<0||q<0){
				    if(p<0&&q<0){
					      cout<<abs(p)<<"/"<<abs(q)<<"+";
				    }else{
					    cout<<0-abs(p)<<"/"<<abs(q)<<"+";
				    }
			    }
			    else{
				    cout<<p<<"/"<<q<<"+";
		        }
			}
			p=1,q=2*a,gcd=0;
			for(int i=sqrt(duita);i>=2;i--){
				if(duita%(i*i)==0){
					duita/=i*i;
					p*=i;
				}
			}
			gcd=_gcd(abs(p),abs(q));
			p/=gcd,q/=gcd;
			if(q==1&&p==1){
				cout<<"sqrt("<<duita<<")\n";
			}else if(q==1){
				cout<<p<<"*sqrt("<<duita<<")\n";
			}else if(p==1){
				cout<<"sqrt("<<duita<<")/"<<q<<"\n";
			}else{
				cout<<p<<"*sqrt("<<duita<<")/"<<q<<"\n";
			}
		}
    }
	return 0;
}
2023/10/23 20:36
加载中...