题目描述
对一个正整数 𝐾K,求出 𝐾K 的所有拆分,并统计输出其中回文数列的个数。
所谓回文数列是指该数列中的所有数字,从左向右或从右向左看都相同。
例如 𝐾=4K=4 时,共有以下 77 种拆分:
4=1+1+1+14=1+1+1+1 (回文数列 11 )
=1+1+2=1+1+2
=1+2+1=1+2+1 (回文数列 22 )
=2+1+1=2+1+1
=2+2=2+2 (回文数列 33 )
=1+3=1+3
=3+1=3+1
其中有 33 种是回文数列。
输入格式
一个正整数 𝐾K。
输出格式
输出一个整数,表示 𝐾K 的所有拆分中回文数列的个数。
样例 #1
样例输入 #1
4
样例输出 #1
3
提示
对于 100%100% 的数据:1≤K≤26。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int a[1000],k;
int main()
{
cin>>k;
a[1]=0;
a[2]=1;
for(int i=3;i<=k;i++)
{
if(i%2)
{
a[i]=a[i-1];
}
else
{
a[i]=a[i-2]*2+1;
}
}
cout<<a[k];
return 0;
}