CSP-J T3,过了样例,却WA9个?求大佬帮忙。
  • 板块学术版
  • 楼主Fu_Da_Ying
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/24 16:52
  • 上次更新2023/11/2 11:35:10
查看原帖
CSP-J T3,过了样例,却WA9个?求大佬帮忙。
746444
Fu_Da_Ying楼主2023/10/24 16:52

可以举反例一下 代码:

#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;
		}
		else 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(p<0&&q<0){
				p=abs(p),q=abs(q);
			}
			if(q==1){
				cout<<p<<"\n";
			}else if(q==-1){
				cout<<0-p<<"\n";
			}else{
				if(p<0||q<0){
					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(p<0&&q<0){
				p=abs(p),q=abs(q);
			}
			if(q==1&&p!=0){
				cout<<p<<"+";
		    }else if(q==-1){
				cout<<0-p<<"\n";
			}else if(p!=0){
				if(p<0||q<0){
					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(p<0&&q<0){
				p=abs(p),q=abs(q);
			}
			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/24 16:52
加载中...