这题明显递推 但是找了好久才找出来 很明显的是n为奇数的时候 n=n-1的偶数答案一样
n为偶数的时候 答案为 上一个偶数是情况 +1 +1 还有n/2 的情况同一 *2 所以h[n]=h[n-2]+h[n/2]
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int d[1000005];
int main()
{
d[1]=1;
d[2]=2;
for(int i=3; i<=1000000; i++)
{
if(i%2)
d[i]=d[i-1];
else
d[i]=d[i-2]+d[i/2];
if(d[i]>1000000000)
d[i]%=1000000000;
}
int n;
while(~scanf("%d",&n))
printf("%d\n",d[n]);
return 0;
}