外观数列 acwing1633
外观数列是指具有以下特点的整数序列:
D, D1, D111, D113, D11231, D112213111, …
其中 D 是一个 [0,9] 范围内的不等于 1 的整数。
序列的第 n+1 项是对第 n 项的描述。
比如第 2 项表示第 1 项有 1 个 D,所以就是 D1;
第 2 项是 1 个 D(对应 D1)和 1 个 1(对应 11),所以第 3 项就是 D111。
又比如第 4 项是 D113,其描述就是 1 个 D,2 个 1,1 个 3,所以下一项就是 D11231。
当然这个定义对 D=1 也成立。
本题要求你推算任意给定数字 D 的外观数列的第 N 项。
输入格式
共一行包含两个整数 D 和 N。
输出格式
在一行中给出数字 D 的外观数列的第 N 项。
数据范围
0≤D≤9,
1≤N≤40
输入样例:
1 8
输出样例:
1123123111
代码
#include
#include
#include<string.h>
#include
#include<stdio.h>
#include
#include<math.h>
using namespace std;
int main()
{
int d,n;
cin>>d>>n;
string cur=to_string(d);
for(int k=0;k<n-1;k++){
string next;
for(int i=0;i<cur.size()){
int j=i+1;
while(j<cur,size()&&cur[i]==cur[j])
j++;
next+=cur[i]+to_string(j-i);
i=j;
}
cur=next;
}
cout<<cur<<endl;
return 0;
}