数列【模拟】

Description–

小S今天给你出了一道找规律题,题目如下:
有如下的数列1,11,21,1211,111221,312211,……
小S问你这个数列的第N项是多少,而你一头雾水根本找不出规律。
聪明的小R悄悄地告诉你是这样的

上一个数是一个1,写作11
上一个数是两个1,写作21
上一个数是一个2,一个1,写作1211
上一个数是一个1,一个2,两个1,写作111221,
…………
相信聪明的你一定可以解决这个问题。


Input–

第一行包括一个正整数N。

Output–

一行一个正整数(注意数字可能会唱过长整形,请注意用数组或者字符串存储)


Sample Input–

6

Sample Output–

312211


说明–

对于100%的数据1<-N<=30。


解题思路–

1:11
11:21
111:31
2:12
22:22
222:32


代码–

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
string a,b;
char tt;
int n,t;
int main()
{
	a="1";
	scanf("%d",&n);
	for (int i=2;i<=n;++i) 
	{
		t=0,b="";
		for (int j=0;j<a.size();++j)
		  if (j==0 || a[j]==tt)
		  	  t++,tt=a[j];
	      else
	      {
	      	  b=b+char(t+'0')+tt;
	      	  tt=a[j],t=1;
	      }
	    b=b+char(t+'0')+tt;
		a=b;
	}
	cout<<a;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43654542/article/details/90725560