1 条题解

  • 0
    @ 2025-9-10 8:58:58

    C++ :

    #include <stdio.h>
    
    #include <algorithm>
    
    void print(int cnt, char c)
    {
      for (int i = 0; i < cnt; ++i)
        putchar(c);
    }
    
    void print(int cnt, char c, char d)
    {
      for (int i = 0; i < cnt; ++i)
        putchar(c), putchar(d);
    }
    
    #define endline putchar('\n')
    
    int main()
    {
      int casc;
      scanf("%d", &casc);
      for (int casi = 1; casi <= casc; ++casi) {
        int a, b, ab, ba;
        scanf("%d %d %d %d", &a, &b, &ab, &ba);
    
        // case1
        if (a == 0 || b == 0) {
          if (ab != 0 || ba != 0) {
            printf("-1\n");
          }
          else {
            print(b, 'b');
            print(a, 'a');
            endline;
          }
          continue;
        }
        // case2
        if (abs(ab - ba) > 1) {
          printf("-1\n");
          continue;
        }
        // case 2.5
        if (ab == 0 || ba == 0) {
          if (ab == 1) {
            print(a, 'a');
            print(b, 'b');
            endline;
          }
          else if (ba == 1) {
            print(b, 'b');
            print(a, 'a');
            endline;
          }
          else {
            printf("-1\n");
          }
          continue;
        }
        // case3
        if (ab == ba) {
          if (a >= ab+1 && b >= ab) {
            print(a-(ab+1), 'a'); // insert
            print(ab, 'a', 'b');
            print(b-ab, 'b'); // insert
            print(1, 'a');
            endline;
          }
          else if (b >= ab+1 && a >= ab) {
            print(1, 'b', 'a');
            print(a-ab, 'a'); // insert
            print(ab-1, 'b', 'a');
            print(1, 'b');
            print(b-(ab+1), 'b'); // insert
            endline;
          }
          else {
            printf("-1\n");
          }
          continue;
        }
        // case4
        if (ab > ba) {
          if (a >= ab && b >= ab) {
            // ab = ba+1
            // ababababab
            print(a-ab, 'a'); // insert
            print(ab, 'a', 'b');
            print(b-ab, 'b'); // insert
            endline;
          }
          else {
            printf("-1\n");
          }
          continue;
        }
        // case5
        if (ab < ba) {
          if (a >= ba && b >= ba) {
            // ab = ba-1
            // bababababa
            if (ba == 1) {
              print(b, 'b');
              print(a, 'a');
              endline;
            }
            else {
              print(1, 'b', 'a');
              print(a-ba, 'a'); // insert
              print(ba-2, 'b', 'a');
              print(1, 'b');
              print(b-ba, 'b'); // insert
              print(1, 'a');
              endline;
            }
          }
          else {
            printf("-1\n");
          }
          continue;
        }
      }
      return 0;
    }
    
    
    • 1

    信息

    ID
    3502
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者