QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#885852#9768. A + B = C ProblemK8HeWA 0ms7884kbC++142.4kb2025-02-06 18:58:242025-02-06 18:58:24

Judging History

This is the latest submission verdict.

  • [2025-02-06 18:58:24]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 7884kb
  • [2025-02-06 18:58:24]
  • Submitted

answer

#include <bits/stdc++.h>
#define _for(i, a, b) for (int i = a; i <= b; ++i)
#define for_(i, a, b) for (int i = a; i >= b; --i)
#define far(i, vec) for (auto i : vec)
#define bdmd int mid = (l + r) >> 1
typedef long double ldb;
typedef long long ll;
typedef double db;
typedef std::pair <int, int> pii;
typedef std::pair <ll, ll> pll;
const int N = 1e6 + 10, P = 998244353;
namespace IO {
	int rnt () {
		int x = 0, w = 1; char c = getchar ();
		while (!isdigit (c)) { if (c == '-') w = -1; c = getchar (); }
		while (isdigit (c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar ();
		return x * w;
	}
} // namespace IO
namespace SOLVE {
	using namespace IO;
	int L[3], A[N], B[N], C[N];
	bool flag;
	ll lcm (int x, int y) { return 1ll * x * y / std::__gcd (x, y); }
	void In () {
		L[0] = rnt (), L[1] = rnt (), L[2] = rnt ();
		return;
	}
	void Solve () {
		_for (i, 1, L[0]) A[i] = 0;
		_for (i, 1, L[1]) B[i] = 0;
		_for (i, 1, L[2]) C[i] = 0;
		flag = true;
		if (L[0] == 2 && L[1] == 2 && L[2] == 2) return flag = false, void ();
		if (lcm (L[1], L[2]) % L[0]) return flag = false, void ();
		if (lcm (L[0], L[2]) % L[1]) return flag = false, void ();
		if (lcm (L[0], L[1]) % L[2]) return flag = false, void ();
		int g = std::__gcd (std::__gcd (L[0], L[1]), L[2]);
		L[0] /= g, L[1] /= g, L[2] /= g;
		int p = std::__gcd (L[0], L[1]), q = L[0] / p, r = L[1] / p;
		int x = std::sqrt (L[2] / (1ll * q * r));
		p /= x, q /= x, r /= x;
		if (p == 1 && q == 1 && r == 1) {
			if (g != 1) {
				A[1] = 0, B[1] = 1, C[1] = 1;
				A[2] = 1, B[2] = 0, C[2] = 1;
			}
		}
		else if (p == 1 && q == 1) {
			A[g] = 1;
			_for (i, 1, r - 1)
				C[i * g] = 1;
			B[r * g] = 1;
		}
		else if (p == 1 && r == 1) {
			B[g] = 1;
			_for (i, 1, r - 1)
				C[i * g] = 1;
			A[r * g] = 1;
		}
		else {
			_for (i, 1, L[0])
				A[i] = ((i / g) % p == 0) ^ ((i / g) % q == 0);
			_for (i, 1, L[1])
				B[i] = ((i / g) % p == 0) ^ ((i / g) % r == 0);
			_for (i, 1, L[2])
				C[i] = ((i / g) % r == 0) ^ ((i / g) % q == 0);
		}
		return;
	}
	void Out () {
		if (flag) {
			puts ("Yes");
			_for (i, 1, L[0]) printf ("%d ", A[i]);
			puts ("");
			_for (i, 1, L[1]) printf ("%d ", B[i]);
			puts ("");
			_for (i, 1, L[2]) printf ("%d ", C[i]);
			puts ("");
		}
		else
			puts ("No");
		return;
	}
}
int main () {
	int T = IO::rnt ();
	while (T--) {
		SOLVE::In ();
		SOLVE::Solve ();
		SOLVE::Out ();
	}
	return 0;
} /*

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 7884kb

input:

2
2 3 6
2 3 5

output:

Yes
1 0 
1 1 0 
0 1 1 1 0 0 
No

result:

wrong answer Invalid output! (test case 1)