求助! 70
查看原帖
求助! 70
995637
dhx666楼主2024/9/29 15:14

代码如下(码风勿喷)

#include <bits/stdc++.h>
using namespace std;
int t,m;
int a,b,c;
int main() {
	//freopen ("P9750_2.in","r",stdin);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin >> t >> m;
	while(t--) {
		cin >> a >> b >> c;
		int det=b*b-4*a*c;
		if(a<0) a*=-1,b*=-1,c*=-1;
		if(det<0) {
			cout << "NO\n";
			continue;
		}
		int x=sqrt(det);
		if(x*x==det) {
			int y=x-b;
			if(y%(2*a)==0) cout << y/(2*a) <<"\n";
			else {
				int z=__gcd(y,2*a);
				cout << y/z << '/' << 2*a/z <<"\n";
			}
			continue;
		}
		int i=2,q=2;
		while(i*i<det) {
			if(det%(i*i)==0) q=i;
			i++;
		}
		int z=__gcd(abs(-b),abs(2*a));
		if(-b<0&&2*a<0) z*=-1;
		if(b!=0){
			cout << -b/z;
			if(2*a!=z) cout << "/" << 2*a/z ;
			cout << '+';
		}
		if(det%(q*q)==0){
			z=__gcd(q,2*a);
			if(q!=z) cout << q/z << '*';
			cout << "sqrt(" << det/(q*q) << ")";
			if(z!=a*2) cout << '/' << 2*a/z;
			cout <<"\n";
		}
		else{
			cout << "sqrt(" << det << ")/" << 2*a << '\n';
		}
	}
	return 0;
}
2024/9/29 15:14
加载中...