QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#825543#9768. A + B = C Problemucup-team4435#WA 1ms3604kbC++232.7kb2024-12-21 20:11:012024-12-21 20:11:01

Judging History

This is the latest submission verdict.

  • [2024-12-21 20:11:01]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3604kb
  • [2024-12-21 20:11:01]
  • Submitted

answer

#include "bits/stdc++.h"


#define rep(i, n) for (int i = 0; i < (n); ++i)
#define rep1(i, n) for (int i = 1; i < (n); ++i)
#define rep1n(i, n) for (int i = 1; i <= (n); ++i)
#define repr(i, n) for (int i = (n) - 1; i >= 0; --i)
#define pb push_back
#define eb emplace_back
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define each(x, a) for (auto &x : a)
#define ar array
#define vec vector
#define range(i, n) rep(i, n)

using namespace std;

using ll = long long;
using ull = unsigned long long;
using ld = long double;
using str = string;
using pi = pair<int, int>;
using pl = pair<ll, ll>;

using vi = vector<int>;
using vl = vector<ll>;
using vpi = vector<pair<int, int>>;
using vvi = vector<vi>;

int Bit(int mask, int b) { return (mask >> b) & 1; }

template<class T>
bool ckmin(T &a, const T &b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool ckmax(T &a, const T &b) {
    if (b > a) {
        a = b;
        return true;
    }
    return false;
}

// [l, r)
template<typename T, typename F>
T FindFirstTrue(T l, T r, const F &predicat) {
    --l;
    while (r - l > 1) {
        T mid = l + (r - l) / 2;
        if (predicat(mid)) {
            r = mid;
        } else {
            l = mid;
        }
    }
    return r;
}


template<typename T, typename F>
T FindLastFalse(T l, T r, const F &predicat) {
    return FindFirstTrue(l, r, predicat) - 1;
}

const int INFi = 2e9;
const ll INF = 2e18;

void solve() {
    int a, b, c; cin >> a >> b >> c;
    vi A(a, 0), B(b, 0);
    bool ok = true;
    auto Add = [&] (int pp) {
        if (!ok) return;
        if (a % pp == 0) {
            for(int i = 0; i < a; i += pp) A[i] ^= 1;
        } else if (b % pp == 0) {
            for(int i = 0; i < b; i += pp) B[i] ^= 1;
        } else {
            ok = false;
        }
    };
    int x = c;
    for(int p = 2; p * p <= x; ++p) {
        if (x % p) continue;
        int pp = 1;
        while (x % p == 0) {
            x /= p;
            pp *= p;
        }
        Add(pp);
    }
    if (x != 1) Add(x);
    if (!ok) {
        cout << "NO\n";
        return;
    }
    vi C(c);
    rep(i, c) C[i] = A[i % a] ^ B[i % b];
    cout << "YES\n";
    rep(i, a) cout << A[i];
    cout << '\n';
    rep(i, b) cout << B[i];
    cout << '\n';
    rep(i, c) cout << C[i];
    cout << '\n';
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout << setprecision(12) << fixed;
    int t = 1;
    cin >> t;
    rep(i, t) {
        solve();
    }
    return 0;
}

/*
 * 100000 10000000
0.0002
 */

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3604kb

input:

2
2 3 6
2 3 5

output:

YES
10
100
001110
NO

result:

ok ok (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 3560kb

input:

1214
940 746 485
304 504 661
815 674 830
704 774 691
545 597 924
330 894 320
491 425 479
768 869 698
706 480 785
358 548 504
999 473 363
532 950 745
512 682 364
829 832 959
570 931 317
324 543 362
590 421 737
326 483 503
958 890 793
836 721 518
720 361 363
730 402 753
810 416 585
781 953 490
623 360...

output:

NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101...

result:

wrong answer Impossible case! (test case 16)