QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#885852 | #9768. A + B = C Problem | K8He | WA | 0ms | 7884kb | C++14 | 2.4kb | 2025-02-06 18:58:24 | 2025-02-06 18:58:24 |
Judging History
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;
} /*
*/
詳細信息
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)