测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25797. 外观数列提示信息:外观数列是一个整数序列,给定该数列的第一项数据之后,从第二项开始,每一项都是对前一项数据的描述。例如:给定外观数列的第一项为 1;接下来第二项是对第一项数据的描述,即“一个 1”,记作 11;第三项是对第二项数据的描述,即“两个 1”,记作 21;第四项是对第三项数据的描述,即“一个 2,一个 1”,记作 1211;第五项是对第四项数据的描述,即“一个 1,一个 2,两个 1”…

填空题 中等

题目描述

外观数列

提示信息:

外观数列是一个整数序列,给定该数列的第一项数据之后,从第二项开始,每一项都是对前一项数据的描述。

例如:

给定外观数列的第一项为 1;

接下来第二项是对第一项数据的描述,即“一个 1”,记作 11;

第三项是对第二项数据的描述,即“两个 1”,记作 21;

第四项是对第三项数据的描述,即“一个 2,一个 1”,记作 1211;

第五项是对第四项数据的描述,即“一个 1,一个 2,两个 1”,记作 111221;以此类推......

题目描述

给定外观数列的第一项 x 以及一个整数 n,请计算出该外观数列第 n 项的值。

例如:x = 2,n = 3,外观数列为:

2
12
1112
3112
132112
......

外观数列第 3 项为 1112。

输入描述

输入两个整数 x(1≤x≤100)和 n(1≤n≤30)

输出描述

输出一个整数,表示外观数列第 n 项的值

样例输入

2 3

样例输出

1112

参考答案

#include <bits/stdc++.h> using namespace std; char x[10000], y[10000]; int main() { int n, lx, t, k; cin >> x >> n; lx = strlen(x); for (int i = 1; i < n; i++) { t = 1, k = 0; for (int i = 1; i <= lx; i++) { if (x[i] != x[i - 1]) { y[k] = t + '0'; y[k + 1] = x[i - 1]; k += 2; t = 1; } else { t++; } } lx = k; memcpy(x, y, sizeof(y)); memset(y, 0, sizeof(y)); } cout << x; return 0; }
上一题 下一题