求助CSP-J T3
  • 板块灌水区
  • 楼主zhuhongye
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/23 14:05
  • 上次更新2023/11/2 11:43:55
查看原帖
求助CSP-J T3
572805
zhuhongye楼主2023/10/23 14:05

有人能出一个hack数据吗,不知道哪里错了

#include<bits/stdc++.h>
#define ll long long

using namespace std;

ll T,n,a,b,c;

ll gcd(ll a,ll b){
	if(a<b)swap(a,b);
	if(b==0)return a;
	return gcd(b,a%b);
}
int main(){
	//freopen("uqe.in","r",stdin);
	//freopen("uqe.out","w",stdout);
	cin>>T>>n;
	
	while(T--){
		bool flag=false;
		cin>>a>>b>>c;
		ll trg=b*b-4*a*c;
		if(trg<0){
			cout<<"NO\n";
			continue;
		}
		if(int(sqrt(trg))*int(sqrt(trg))==trg){
			if((double(-b+sqrt(trg))/(2*a))>=double(-b-sqrt(trg))/(2*a)){
				if((-b+int(sqrt(trg)))%(2*a)==0)cout<<(-b+sqrt(trg))/(2*a);
				else {
					ll q1m=2*a,q1z=-b+sqrt(trg);
					ll gd=gcd(abs(q1m),abs(q1z));
					q1m/=gd,q1z/=gd;
					
					cout<<q1z<<"/"<<q1m;
				}
			}
			else{
				cout<<-b<<" "<<int(sqrt(trg))<<"\n";
				if((-b-int(sqrt(trg)))%(2*a)==0)cout<<(-b-sqrt(trg))/(2*a);
				else {
					ll q1m=2*a,q1z=-b-sqrt(trg);
					ll gd=gcd(abs(q1m),abs(q1z));
					q1m/=gd,q1z/=gd;
					
					cout<<q1z<<"/"<<q1m;
				}
			}cout<<"\n";
			continue;
		}
		double ssj1=(-b+sqrt(double(trg)))/(2*a),ssj2=(-b-sqrt(double(trg)))/(2*a);
		
		if(ssj1>ssj2)flag=true;
		ll q1m=2*a,q1z=-b;
		
		ll gd=gcd(abs(q1m),abs(q1z));
		q1m/=gd,q1z/=gd;
		
		ll q2m=2*a,q2z=1;
		for(int i=2;i*i<=trg;i++){
			while(trg%(i*i)==0){
				trg/=i*i;
				if(q2m%i==0)q2m/=i;
				else q2z*=i;
			}
		} 
		
		if((q2m<0 || q2z<0) && (q2m>0 || q2z>0))flag=!flag;
		q2m=abs(q2m),q2z=abs(q2z);
		if(q1z!=0){
			if(q1z%q1m==0)cout<<q1z/q1m;
			else {
				cout<<q1z<<"/"<<q1m;
			}
			if(flag==true)cout<<"+";
			else cout<<"-";
		}
		if(q2z!=0 && q2z!=1)cout<<q2z<<"*";
		cout<<"sqrt("<<trg<<")";
		if(q2m!=0 && q2m!=1)cout<<"/"<<q2m;
		cout<<"\n";
	}
	return 0;
}
2023/10/23 14:05
加载中...