“伯爵说”序列如下:1,11,21,1211,111221, \ldots1,11,21,1211,111221,…。其1
读作one 1
或者11
。11
读作two 1s
或者21
。21
读作one 2, one 1
或者1211
。
输入格式
多组输入,读到文件结束。每组输入给定一个整数 n(1 \leq n \leq 30)n(1≤n≤30)。
输出格式
输出第 nn 个序列。注意,整数序列以字符串的形式表示。
样例输入
6
样例输出
312211
查看提示
编辑代码
#include<iostream>
#include <cstdio>
#include <cstring>
using namespace std;
void fun(char *s, int n)
{
int cnt, len;
char ch, tmp[10000];
for (int j = 1; j < n; ++j) {
len = 0;
for (int i = 0; s[i] != '\0'; ++i) {
if (i == 0) {
ch = s[i];
cnt = 1;
}
else {
if (ch == s[i])
++cnt;
else {
len += sprintf(tmp+len, "%d%c", cnt, ch);
ch = s[i];
cnt = 1;
}
}
}
sprintf(tmp+len, "%d%c", cnt, ch);//定向输入
strcpy(s,tmp);
}
}
int main()
{
int n;
char s[10000];
while (scanf("%d", &n)!=-1){
strcpy(s, "1");
fun(s, n);
cout<<s<<endl;
}
return 0;
}