洛谷P1098 字符串的展开

    技术2022-07-11  91

    #include <iostream> #include <cstring> using namespace std; char a[101], b[10001]; int p1, p2, p3; int main() { cin >> p1 >> p2 >> p3; cin >> a; int len = strlen(a); int j = 0; for (int i = 0; i < len; i++) { if (a[i] != '-') { b[j] = a[i]; j++; } else if (i == 0 || i == len - 1) { b[j] = '-'; j++; } else if (a[i - 1] == '-' || a[i + 1] == '-') { b[j] = '-'; j++; } else if (a[i - 1] >= '0' && a[i - 1] <= '9' && ((a[i + 1] >= 'a' && a[i + 1] <= 'z') || (a[i + 1] >= 'A' && a[i + 1] <= 'Z'))) { b[j] = '-'; j++; } else if (a[i - 1] >= a[i + 1]) { b[j] = '-'; j++; } else if (p1 == 3) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = '*'; j++; } } else if (a[i-1] >= '0' && a[i-1] <= '9') { if (p3 == 1) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + k + 1; j++; } } if (p3 == 2) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + a[i + 1] - a[i - 1] - k - 1; j++; } } } else if (a[i - 1] >= 'a' && a[i - 1] <= 'z') { if (p1 == 1) { if (p3 == 1) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + k + 1; j++; } } if (p3 == 2) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + a[i + 1] - a[i - 1] - k - 1; j++; } } } else { if (p3 == 1) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + k + 1 - 32; j++; } } if (p3 == 2) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + a[i + 1] - a[i - 1] - k - 1 - 32; j++; } } } } else if (a[i - 1] >= 'A' && a[i - 1] <= 'Z') { if (p1 == 1) { if (p3 == 1) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + k + 1 + 32; j++; } } if (p3 == 2) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + a[i + 1] - a[i - 1] - k - 1 + 32; j++; } } } else { if (p3 == 1) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + k + 1; j++; } } if (p3 == 2) { for (int k = 0; k < a[i + 1] - a[i - 1] - 1; k++) for (int l = 0; l < p2; l++) { b[j] = a[i - 1] + a[i + 1] - a[i - 1] - k - 1; j++; } } } } } for (int i = 0; i < j; i++) cout << b[i]; return 0; }
    Processed: 0.014, SQL: 12