学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客
【题目描述】
给出正整数 n,要求按如下方式构造数列:
- 只有一个数字 n 的数列是一个合法的数列。
- 在一个合法的数列的末尾加入一个正整数,但是这个正整数不能超过该数列最后一项的一半,可以得到一个新的合法数列。
请你求出,一共有多少个合法的数列。两个合法数列 a,b 不同当且仅当两数列长度不同或存在一个正整数 i≤∣a∣,使得 ai≠bi。
【输入】
输入只有一行一个整数,表示 n。
【输出】
输出一行一个整数,表示合法的数列个数。
【输入样例】
6
【输出样例】
6
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, a[1005]={0, 1, 2};
cin >> n;
for (int i=3; i<=n; i++) {
if (i%2==1) a[i] = a[i-1];
else a[i] = a[i-1] + a[i/2];
}
cout << a[n];
return 0;
}
【运行结果】
6
6