Eyjafja1la @ 2022-03-19 20:17:00
int main() {
char ch, s[40000];
int i = 0, j;
while (scanf("%c", &ch) != EOF) {
if (ch != '\n')
s[i++] = ch;
}
int n = sqrt(i), flag = 0, cnt = 0;
printf("%d", n);
for (j = 0; j < i; ++j) {
if ((s[j]-'0') ^ flag == 0) {
++cnt;
}
else {
printf(" %d", cnt);
cnt = 1;
flag = flag ^ 1;
}
}
printf(" %d", cnt);
return 0;
}
附一组数据
11111
00100
11111
00100
11111
本地结果 5 0 5 2 1 2 5 2 1 2 5
洛谷结果 5 0 6 2 1 2 5 2 1 2 5
by Qing_fy @ 2022-03-19 20:26:44
试试把 if (ch != '\n')
改成 if (isdigit(ch))
?可能数据没有那么严密
by Qing_fy @ 2022-03-19 20:27:31
@Eyjafja1la AC了。
by Qing_fy @ 2022-03-19 20:28:23
@Eyjafja1la 如果把你的数据后面加一个空格,你的程序就WA了。
by Eyjafja1la @ 2022-03-19 20:42:45
@Qing_fy OK了 谢谢大佬!!!