j组T3代码求看看
  • 板块学术版
  • 楼主syq2022
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/23 08:52
  • 上次更新2023/11/2 11:45:34
查看原帖
j组T3代码求看看
894429
syq2022楼主2023/10/23 08:52
#include <bits/stdc++.h>
using namespace std;
void print(int k1, int k2, int k3, bool flag) {
	int kk1 = 1;
	if (flag) {
		for (int i = 1; i <= k1 / i; i++) {
			if (k1 % (i * i) == 0) {
				kk1 *= i;
				k1 /= (i * i);
			}
		}
		int kt1 = kk1, kt2 = k2, kt3 = k3, k13 = k3,k23 = k3;
		if (kt1 == 0) kt1 = 1e9;
		if (kt3 == 0) kt3 = 1e9;
//		for (int i = -min({abs(kt1), abs(kt2), abs(kt3)}); i <= min({abs(kt1), abs(kt2), abs(kt3)}); i++) {
//			if (i == 0) continue;
//			if (kk1 % i == 0 && k2 % i == 0 && k3 % i == 0) {
//				kk1 /= i;
//				k2 /= i;
//				k3 /= i;
//			}
//		}
		for (int i = -min(abs(k2), abs(k13)); i <= min(abs(k2), abs(k13)); i++) {
			if (i == 0) continue;
			if (k2 % i == 0 && k3 % i == 0) {
				k2 /= i;
				k13 /= i;
			}
		}
		for (int i = -min(abs(kk1), abs(k23)); i <= min(abs(kk1), abs(k23)); i++) {
			if (i == 0) continue;
			if (kk1 % i == 0 && k23 % i == 0) {
				kk1 /= i;
				k23 /= i;
			}
		}
		if (k13 < 0) {
			k13 *= -1;
			k2 *= -1;
		}
		if (k23 < 0) {
			k23 *= -1;
			kk1 *= -1;
		}
		if (k2 != 0) {
			if (k13 == 1) {
				cout << k2;
			} else {
				cout << k2 << '/' << k13;
			}
		}
		if (kk1 != -1 && k1 != 0 && k2 != 0) {
			cout << '+';
		}
		if (k1 != 0) {
			if (kk1 == -1) {
				cout << '-';
			}
			else if (kk1 != 1) {
				cout << kk1 << '*';
			}
//			if (k1 != 1)
			cout << "sqrt(" << k1 << ')';
			if (k23 != 1) cout << '/' << k23;
		}
	} else {
		int kk = k1 + k2;
		if (kk == 0) kk = 1e9;
		for (int i = -min(abs(kk), abs(k3)); i <= min(abs(kk), abs(k3)); i++) {
			if (i == 0) continue;
			if (kk % i == 0 && k3 % i == 0) {
				kk /= i;
				k3 /= i;
			}
		}
		if (k3 < 0) k3 *= -1, kk *= -1;
		cout << kk;
		if (k3 != 1) cout << "/" << k3; 
	}
	puts("");
	return;
}
void solve() {
	int a, b, c;
	cin >> a >> b >> c;
	int dt = b * b - 4 * a * c;
	if (dt < 0) {
		cout << "NO\n";
		return;
	}
	bool flag = 0;
	int k1= dt, k2, k3;
	if (sqrt(dt) == floor(sqrt(dt))) {
		k1 = sqrt(dt);
	} else {
		flag = 1;
	}
	k2 = -b;
	k3 = 2 * a;
	print(k1, k2, k3, flag);
//	print(k1, k2, k3, flag, -1);
//	k2 + k1 / k3
	return;
}
int main() {
//	freopen("uqe.in", "r", stdin);
//	freopen("uqe.out", "w", stdout);
	int t, m;
	cin >> t >> m;
	while (t--) {
		solve();
	}
//	fclose(stdin);
//	fclose(stdout);
	return 0;
}

0分

2023/10/23 08:52
加载中...