Problem Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7:
Input A single line with a single integer, N.
Output The number of ways to represent N as the indicated sum. Due to the potential huge size of this number, print only last 9 digits (in base 10 representation).
Sample Input 7
Sample Output 6 |
搜索的话会超时,直接打表找规律得
偶数时a[ i ]=(a[ i-1 ]+a[ i/2 ])(记得mod)
奇数时等于前一偶数的
#include <iostream>
using namespace std;
__int64 a[1000001];
int main()
{
int i,n;
a[1]=1;
a[2]=2;
for(i=3;i<1000001;i++){
if(i&1)
a[i]=a[i-1];//因为加1后并为能形成2得幂次数
else
a[i]=(a[i-2]+a[i/2])%1000000000;
}
while(cin>>n)
cout<<a[n]<<endl;
return 0;
}