QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#884791#9768. A + B = C ProblemEstelle_NWA 0ms5864kbC++142.7kb2025-02-06 10:48:452025-02-06 10:48:46

Judging History

This is the latest submission verdict.

  • [2025-02-06 10:48:46]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 5864kb
  • [2025-02-06 10:48:45]
  • Submitted

answer

#include <cstdio>
#include <algorithm>

#define int long long

using namespace std;

const int N = 1000005;

int T, A, B, C, P[N], Q[N], R[N];

int gcd(int x, int y)
{
    return __gcd(x, y);
}

int lcm(int x, int y)
{
    return x * y / __gcd(x, y);
}

void work()
{
    scanf("%lld%lld%lld", &A, &B, &C);

    if(A == 2 && B == 2 && C == 2)
        return printf("NO\n"), void();
    if(lcm(B, C) % A || lcm(A, C) % B || lcm(A, B) % C)
        return printf("NO\n"), void();
    if(A == 1 && B == 1 && C == 1)
        return printf("YES\n0\n0\n0\n"), void();

    int g = gcd(A, gcd(B, C));
    int p = gcd(A / g, B / g), q = gcd(A / g, C / g), r = gcd(B / g, C / g);
    if(p == 1 && q == 1 && r == 1)
    {
        printf("YES\n");
        for(int i = 1; i <= g - 2; ++ i)
            printf("0");
        printf("01\n");
        for(int i = 1; i <= g - 2; ++ i)
            printf("0");
        printf("10\n");
        for(int i = 1; i <= g - 2; ++ i)
            printf("0");
        printf("11\n");
        return;
    }
    if(p == 1 && q == 1)
    {
        printf("YES\n");
        for(int i = 1; i <= g - 1; ++ i)
            printf("0");
        printf("1\n");
        for(int i = 1; i <= g * r - 1; ++ i)
            printf("0");
        printf("1\n");
        for(int i = 1; i <= g * r - 1; ++ i)
            printf("%d", i % g == 0);
        printf("0\n");
        return;
    }
    if(p == 1 && r == 1)
    {
        printf("YES\n");
        for(int i = 1; i <= g * q - 1; ++ i)
            printf("0");
        printf("1\n");
        for(int i = 1; i <= g - 1; ++ i)
            printf("0");
        printf("1\n");
        for(int i = 1; i <= g * q - 1; ++ i)
            printf("%d", i % g == 0);
        printf("0\n");
        return;
    }
    if(q == 1 && r == 1)
    {
        printf("YES\n");
        for(int i = 1; i <= g * p - 1; ++ i)
            printf("0");
        printf("1\n");
        for(int i = 1; i <= g * p - 1; ++ i)
            printf("%d", i % g == 0);
        printf("0\n");
        for(int i = 1; i <= g - 1; ++ i)
            printf("0");
        printf("1\n");
        return;
    }

    P[0] = Q[0] = P[A - 1] = Q[B - 1] = 1;
    for(int i = 1; i < A - 1; ++ i)
        P[i] = 0;
    for(int i = 1; i < B - 1; ++ i)
        Q[i] = 0;

    printf("YES\n");
    for(int i = 0; i < A; ++ i)
        printf("%lld", P[i]);
    printf("\n");
    for(int i = 0; i < B; ++ i)
        printf("%lld", Q[i]);
    printf("\n");
    for(int i = 0; i < C; ++ i)
        printf("%lld", P[i % A] ^ Q[i % B]);
    printf("\n");
}

signed main()
{
    scanf("%lld", &T);
    while(T --)
        work();

    return 0;
}

详细

Test #1:

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

input:

2
2 3 6
2 3 5

output:

YES
11
101
010010
NO

result:

wrong answer Incorrect period 2 3 6 (test case 1)