题目:
小S今天给你出了一道找规律题,题目如下: 有如下的数列1,11,21,1211,111221,312211,…… 小S问你这个数列的第N项是多少,而你一头雾水根本找不出规律。 聪明的小R悄悄地告诉你是这样的 1, 上一个数是一个1,写作11 上一个数是两个1,写作21 上一个数是一个2,一个1,写作1211 上一个数是一个1,一个2,两个1,写作111221, ………… 相信聪明的你一定可以解决这个问题。
输入:
第一行包括一个正整数N。
输出:
一行一个正整数(注意数字可能会唱过长整形,请注意用数组或者字符串存储)
样例输入:
6
样例输出:
312211
思路:
按着题目打下去就好了。
一个神奇的秘密:
把1,11,21,1211,111221,312211套进这个东东里,就可以打表了。
50分打表
c
o
d
e
code
code:
#include<cstdio>
#include<iostream>
using namespace std
;
int n
;
int main()
{
scanf("%d",&n
);
if(n
==1)printf("1");
else if(n
==2)printf("11");
else if(n
==3)printf("21");
else if(n
==4)printf("1211");
else if(n
==5)printf("111221");
else if(n
==6)printf("312211");
else if(n
==7)printf("13112221");
else if(n
==8)printf("1113213211");
else if(n
==9)printf("31131211131221");
else if(n
==10)printf("13211311123113112211");
else if(n
==11)printf("11131221133112132113212221");
else if(n
==12)printf("3113112221232112111312211312113211");
else if(n
==13)printf("1321132132111213122112311311222113111221131221");
else if(n
==14)printf("11131221131211131231121113112221121321132132211331222113112211");
}
C
o
d
e
Code
Code:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std
;
int n
,t
;
char c
;
string str
[40];
int main()
{
scanf("%d",&n
);
str
[1]="1";
for(int i
=2;i
<=n
;i
++)
{
t
=1;
c
=str
[i
-1][0];
for(int j
=1;j
<str
[i
-1].size();j
++)
{
if(str
[i
-1][j
]!=c
)
{
str
[i
]+=t
+48;
str
[i
]+=c
;
t
=1; c
=str
[i
-1][j
];
}
else t
++;
}
str
[i
]+=t
+48;
str
[i
]+=c
;
}
cout
<<str
[n
]<<endl
;
return 0;
}