1 条题解
-
0
算法标签:
模拟
题解:
按照题意模拟一下
#include <iostream> #include <cstring> using namespace std; void change(char s1[100], int l, int k, char s[100]) { for (int i = 0; i < l; i++) { s[(i + k) % l] = s1[i]; } } int main() { int k1, k2, k3, p[100]; char s[100], ans[3][100], res[3][100]; while (cin >> k1 >> k2 >> k3 && (k1 || k2 || k3)) { cin >> s; int l = strlen(s); int l1 = 0, l2 = 0, l3 = 0, i; for (i = 0; i < l; i++) { if (s[i] >= 'a' && s[i] <= 'i') { p[i] = 0; ans[0][l1++] = s[i]; } else if (s[i] >= 'j' && s[i] <= 'r') { p[i] = 1; ans[1][l2++] = s[i]; } else { p[i] = 2; ans[2][l3++] = s[i]; } } if (l1) k1 %= l1; if (l2) k2 %= l2; if (l3) k3 %= l3; change(ans[0], l1, k1, res[0]); change(ans[1], l2, k2, res[1]); change(ans[2], l3, k3, res[2]); k1 = k2 = k3 = 0; for (i = 0; i < l; i++) { if (p[i] == 0) { cout << res[0][k1++]; } else if (p[i] == 1) { cout << res[1][k2++]; } else { cout << res[2][k3++]; } } cout << endl; } return 0; }
- 1
信息
- ID
- 108
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者