# include <stdio.h> # include <string.h> int main() { int n,q = 0; scanf("%d %d", &n ,&q); char arr[100100] = { 0 }; scanf("%s", arr); char str[100010] = { 0 }; while (q) { int l, r; scanf("%d %d", &l, &r); l--; r--; int j = 0; for (int i = 0; i < n; i++) { str[j] = arr[i]; j++; if (i >= l && i <= r)//直接把要重复的区间多放一遍 { str[j] = arr[i]; j++; } } memcpy(arr, str, sizeof(str));//更新新的字符数组 q--; n = j + 1; } i = 0; while(arr[i] != '/0') { printf("%c",arr[i]); i++; } /*for (int i = 0; i < n; i++) { if (arr[i] == '\0') break; printf("%c", arr[i]); }*///不知道这样写为什么不对,如果里面不加那个判断的话会多输出两个\0,结果就错了,加了判断就能过 return 0; }