求点赞
2026-09-13 13:17:31
发布于:广东
6阅读
0回复
0点赞
#include <unistd.h>
static char inBuf[1 << 10];
static int inLen = 0, inPos = 0;
inline int readChar() {
if (inPos == inLen) {
inLen = read(0, inBuf, sizeof(inBuf));
inPos = 0;
if (inLen <= 0) return -1;
}
return inBuf[inPos++];
}
static char s[2][1000005];
int main() {
// 读入初始串
int len = 0;
int c = readChar();
while (c <= ' ') { if (c == -1) return 0; c = readChar(); }
while (c > ' ') { s[0][len++] = (char)c; c = readChar(); }
// 读入 n
while (c <= ' ') { if (c == -1) return 0; c = readChar(); }
int n = 0;
while (c > ' ') { n = n * 10 + (c - '0'); c = readChar(); }
int cur = 0;
for (int k = 0; k < n; k++) {
int nxt = cur ^ 1;
int nl = 0;
for (int i = 0; i < len; ) {
int j = i;
while (j < len && s[cur][j] == s[cur][i]) j++;
int cnt = j - i;
// 写 cnt 的十进制
char tmp[8]; int tl = 0;
while (cnt) { tmp[tl++] = '0' + cnt % 10; cnt /= 10; }
while (tl) s[nxt][nl++] = tmp[--tl];
s[nxt][nl++] = s[cur][i];
i = j;
}
cur = nxt;
len = nl;
}
s[cur][len++] = '\n';
write(1, s[cur], len);
return 0;
}
这里空空如也





有帮助,赞一个