Run ID:5051

提交时间:2024-10-31 08:31:32

#include <iostream> #include <string> using namespace std; string expand(string s, int p1, int p2, int p3) { string result = ""; for (int i = 0; i < s.length(); ++i) { if (s[i]!= '-') { result += s[i]; } else { char left = s[i - 1]; char right = s[i + 1]; if ( ( (left >= 'a' && left <= 'z' && right >= 'a' && right <= 'z' && right > left) || (left >= '0' && left <= '9' && right >= '0' && right <= '9' && right > left) ) ) { if (right == left + 1) { result.pop_back(); } else { string fill; if ( (left >= 'a' && left <= 'z' && right >= 'a' && right <= 'z' && (p1 == 1 || p1 == 3)) || (left >= '0' && left <= '9' && right >= '0' && right <= '9' && p1 == 3) ) { char start = (p1 == 1 || p1 == 3)? left + 1 : toupper(left + 1); char end = (p1 == 1 || p1 == 3)? right : toupper(right); for (char j = start; j < end; ++j) { for (int k = 0; k < p2; ++k) { if (p1 == 3) { fill += '*'; } else { fill += j; } } } } if (p3 == 1) { result += fill; } else { for (int k = fill.length() - 1; k >= 0; --k) { result += fill[k]; } } } } else { result += s[i]; } } } return result; } int main() { int p1, p2, p3; string s; while (cin >> p1 >> p2 >> p3) { cin >> s; cout << expand(s, p1, p2, p3) << endl; } return 0; }