数列

题目描述

有一个数列的定义为:
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 }

外观数列。还不是太明白

原文地址:https://www.cnblogs.com/yelan/p/2875823.html