【PAT】B1084 外观数列(20 分)(纯C)

时间:2023-03-09 03:28:16
【PAT】B1084 外观数列(20 分)(纯C)

第一层循环,用来循环计算第几个元素

第二层用来计算当前元素的下一个

#include<stdio.h>
#include<string.h>
char aaa[100000] = { '\0' }; int main() {
int N; scanf("%c %d",&aaa[0], &N);
for (int i = 2; i <= N; i++) {//第几个元素
char bbb[100000] = { '\0' }; //创建空字符串,保存生成的下一个元素
int b = 0, num = 0;
for (int j = 0; aaa[j] != '\0'; j++) { //计算一个元素
if (aaa[j] == aaa[j + 1]) { //重复什么都不干,就计数
num++;
}
else { //不重复,该输出了
bbb[b++] = aaa[j];
if (num == 0) //就一个
bbb[b++] = '0' + 1;
else { //重复
int temp = num + 1;
num = 0;
bbb[b++] = temp % 10 + '0';
}
}
}
strcpy(aaa, bbb); //将生成的元素复制到原始字符串
}
printf("%s", aaa);
return 0;
}