60求hack
查看原帖
60求hack
749055
LimityZetta楼主2024/7/26 23:06
#include <bits/stdc++.h>
using namespace std;
#define Re return
#define int long long
int t, m;

inline int gcd(int a, int b) {
	if (!b) {
		return a;
	}
	return gcd(b, a % b);
}

inline void fraction(int a, int b) {
	int k = gcd(a, b);
	a /= k, b /= k;
	if (b < 0)
		a = -a, b = -b;
	printf("%lld/%lld", a, b);
}

inline void fraction2(int a, int b) {
	printf("sqrt(%lld)/%lld\n", a, b);
}

inline void sol(int a, int b, int c) {
	int derta = b * b - 4 * a * c;
	if (derta < 0) {
		printf("NO\n");
		Re;
	}
	bool f = 0, f2 = 0;
	int q2 = 1;
	bool mem = 0;
	for (int i = 2; i * i <= derta; i++) {
		while (!(derta % (i * i))) {
			derta /= (i * i);
			q2 *= i;
		}
	}
	int q1 = -b;
	bool itg1 = 0, itg2 = 0;
	if (a > 0) {
		f2 = 1;
	}
	if (derta <= 1) {
		int k = q2 * sqrt(derta);
		if (f2) {
			int fir = -b + k, sec = 2 * a;
			if ((fir / sec)*sec == fir)
				printf("%lld", (fir / sec));
			else
				fraction(fir, sec);
			printf("\n");
			Re;
		} else {
			int fir = -b - k, sec = 2 * a;
			if ((fir / sec)*sec == fir)
				printf("%lld", (fir / sec));
			else
				fraction(fir, sec);
			printf("\n");
			Re;
		}
	}
	if (q2 / (2 * a) * (2 * a) == q2)
		q2 /= 2 * a, itg2 = 1;
	if (q1 / (2 * a) * (2 * a) == q1)
		q1 /= 2 * a, itg1 = 1;
	if (a < 0) {
		a = -a;
		q2 = -q2;
	}
	if (q1 != 0) {
		if (itg1) {
			printf("%lld+", q1);
		} else {
			fraction(q1, 2 * a);
			printf("+");
		}
	}
	int q3 = (1.0 / (double(1.0 * q2 / (2 * a))));
	if (q2 == 1 && itg2) {
		printf("sqrt(%lld)\n", derta);
		Re;
	} else if (itg2) {
		printf("%lld*sqrt(%lld)\n", q2, derta);
		Re;
	} else if (q3 * (double(1.0 * q2 / (2 * a))) == 1) {
		fraction2(derta, q3);
		Re;
	} else {
		int d = 2 * a, k = gcd(q2, d);
		q2 /= k, d /= k;
		if (q2 == 1) {
			printf("sqrt(%lld)/%lld\n", derta, d);
			Re;
		}
		printf("%lld*sqrt(%lld)/%lld\n", q2, derta, d);
		Re;
	}
}

inline void Read() {
	scanf("%lld%lld", &t, &m);
	while (t--) {
		int a, b, c;
		scanf("%lld%lld%lld", &a, &b, &c);
		sol(a, b, c);
	}
}

signed main() {
	Read();
}
``````
2024/7/26 23:06
加载中...