CSP-J T3 60分 求助
  • 板块灌水区
  • 楼主Ultra_excavator
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/28 16:22
  • 上次更新2023/11/2 11:03:35
查看原帖
CSP-J T3 60分 求助
676063
Ultra_excavator楼主2023/10/28 16:22
#include <bits/stdc++.h>
using namespace std;
long long t, m;
int main() {
//	freopen("a.in","r",stdin);
//	freopen("u.out","w",stdout);
	cin >> t >> m;
	while (t--) {
		long long a, b, c;
		cin >> a >> b >> c;
		if (b * b - 4 * a * c < 0) {
			cout << "NO" << endl;
			continue;
		}
		if (a < 0) {
			a = -a;
			b = -b;
			c = -c;
		}
		long long de = b * b - 4 * a * c;
		if (int(sqrt(de))*int(sqrt(de)) == de) {
			long long p = -1 * b+sqrt(de), q = 2 * a,pp=abs(p),qq=abs(q);
			long long u = __gcd(pp, qq);
			p /= u;
			q /= u;
			if (p == 0) {
				cout << "0" << endl;
				continue;
			}
			if (q == 1) {
				cout << p << endl;
			} else {
				if (p*q<0) {
					cout << "-";
				}
				cout << abs(p) << "/" << abs(q) << endl;
			}
		} else {
			long long p = -1 * b;
			long long q = 2 * a,pp=abs(p),qq=abs(q);
			long long o = 0;
			if (p != 0) {
				long long u = __gcd(pp, qq);
				p /= u;
				q /= u;
				o = 1;
//				if(p==q){
//					cout<<"1"<<endl;
//					continue;
//				}
//				if(p==-1*q){
//					cout<<"-1"<<endl;
//					continue;
//				}
				if (q == 1) {
					cout << p;
				} else {
					if (p*q<0) {
						cout << "-";
					}
					cout << abs(p) << "/" << abs(q);
				}
			}
			p = 1;
			for (long long i = 2; i * i <= m; i++) {
				while (de % (i * i) == 0) {
					p *= i;
					de /= (i * i);
				}
			}
			q = 2 * a;
			pp=abs(p);
			qq=abs(q);
			long long u = __gcd(pp, qq);
			p /= u;
			q /= u;
			if (p != 0) {
				if (p*q<0) {
					//cout << "-";
				} else {
					if (o == 1) {
						cout << "+";
					}
				}
				if (q == 1 && p == 1) {
					cout << "sqrt(" << de << ")" << endl;
				} else if (q == 1) {
					cout << p << "*sqrt(" << de << ")" << endl;
				} else if (p == 1) {
					cout << "sqrt(" << de << ")/" << q << endl;
				} else {
					cout << p << "*sqrt(" << de << ")/" << q << endl;
				}
			}
		}
	}
}
2023/10/28 16:22
加载中...