您的位置:首页 > 其它

求数列......1,2,1,3,2,3,1,4,3,5,2,5,3,4,1...第n项

2018-03-26 22:01 225 查看
题意:求数列......1,2,1,3,2,3,1,4,3,5,2,5,3,4,1...第n项。
题解:通过观察等数字1的下标,1,3,7,15我们发现都是2的幂次方-1,我们如果在把下标加1,那么发现a[2*n]=2*a
.且
a[2*n+1]=a
+a[n+1]。a[3]=2,a[2]=1,那么a[1]=1。于是数列就变成1,1,2,1,3,2,3,1,4,3,5,2,5,3,4,1...通项公式为
a[2*n]=2*a


a[2*n+1]=a
+a[n+1]


递归搞一下就行了。#include <stdio.h>
typedef long long ll;
ll dfs(ll n)
{
if(n==1) return 1;
if(n&1) return dfs(n/2)+dfs(n/2+1);
else return dfs(n/2);
}
int main()
{
ll n;scanf("%lld",&n);
n++; //因为前面补了一个1,所以下标+1。
printf("%lld\n",dfs(n));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: