1 条题解
-
0
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
- 上传者