数列
题目描述
有一个数列的定义为:
F(1) = 1;
F(2) = 11;
F(3) = 21;
F(4) = 1211;
F(5) = 111221;
F(6) = 312211;
……
现在给定一个正整数 n,求的F(n)的长度。
输入
输入包含多组测试数据。
每组数据只有一行为 1 个整数 n(0 < n < 30)。
输入 0 代表输入的结束,该组数据不做处理。
输出
对于每组测试数据,按照题目描述输出对应的结果。
示例输入
1 6 0
示例输出
1 6
View Code
1 #include<stdio.h> 2 #include<string.h> 3 char s[100000], w[100000] ; 4 int main() 5 { 6 int n; 7 while(scanf("%d",&n)!=EOF) 8 { 9 if(0==n) break ; 10 s[0]='1' ; 11 s[1]='\0' ; 12 if(1==n) 13 { 14 puts(s); 15 continue; 16 } 17 int in=1,i,j,o ; 18 char c ; 19 for(i=1; i<n; i++) 20 { 21 int p=strlen(s),index=0 ; 22 for(j=0; j<p;) 23 { 24 in=1 ; 25 c=s[j] ; 26 for(o=j+1;o<p;o++) 27 { 28 if(c==s[o]) 29 { 30 in++; 31 } 32 else break; 33 } 34 int d=in+48 ; 35 w[index]=d ; 36 index++ ; 37 w[index]=c ; 38 index++ ; 39 j+=in ; 40 } 41 w[index]='\0' ; 42 strcpy(s,w) ; 43 } 44 printf("%d\n",strlen(s)) ; 45 } 46 return 0 ; 47 }
外观数列。还不是太明白