求助csp-j T3
  • 板块学术版
  • 楼主hwh_qwq
  • 当前回复6
  • 已保存回复7
  • 发布时间2023/10/26 19:14
  • 上次更新2023/11/2 11:18:56
查看原帖
求助csp-j T3
651883
hwh_qwq楼主2023/10/26 19:14

rt,求hack或者找错

#include<iostream>
#include<cmath>
using namespace std;
int gcd(int x,int y) {
	if(x%y==0) return y;
	return gcd(y,x%y);
}
int main() {
	int t,m;
	cin>>t>>m;
	while(t--) {
		int a,b,c;
		cin>>a>>b>>c;
		int d=b*b-4*a*c;
		if(d<0){
			cout<<"NO"<<endl;
			continue;
		}
		double x=max((-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
		int n=sqrt(d);
		if(n*n==d) {
			int x=-b+sqrt(d);
			int y=2*a;
			if(1.0*x/y<(-b-sqrt(d))/y) x=-b-sqrt(d);
			if(y/gcd(x,y)==1) {
				cout<<x/gcd(x,y)<<endl;
			}else {
				if(y/gcd(x,y)<0) cout<<-x/gcd(x,y)<<'/'<<-y/gcd(x,y)<<endl;
				else cout<<x/gcd(x,y)<<'/'<<y/gcd(x,y)<<endl;
			}
		}
		else{
			double q1=-b/(2.0*a),q2=1;
			int r=d;
			for(int i=2; i*i<=r; i++) {
				if(r%(i*i)==0) {
					r/=i*i;
					q2*=i;
					i--;
				}
			}
			q2/=abs(2*a);
			if(q1!=0) {
				int x=-b;
				int y=2*a;
				if(y/gcd(x,y)==1) cout<<x/gcd(x,y)<<'+';
				else {
					if(y/gcd(x,y)<0) cout<<-x/gcd(x,y)<<'/'<<-y/gcd(x,y)<<'+';
					else cout<<x/gcd(x,y)<<'/'<<y/gcd(x,y)<<'+';
				}
			}
			double q3=1/q2;
			if(q2==1) cout<<"sqrt("<<r<<')'<<endl;
			else if((int)(q2)==q2) cout<<q2<<"*sqrt("<<r<<')'<<endl;
			else if((int)(q3)==q3) cout<<"sqrt("<<r<<")/"<<q3<<endl;
			else {
				int c=q2*abs(2*a);
				int d=abs(2*a);
				if(d/gcd(c,d)<0) cout<<-c/gcd(c,d)<<"*sqrt("<<r<<")/"<<-d/gcd(c,d)<<endl;
				else cout<<c/gcd(c,d)<<"*sqrt("<<r<<")/"<<d/gcd(c,d)<<endl;
			}
		}
	}
	return 0;
}
2023/10/26 19:14
加载中...