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:
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
A single line with a single integer, N.
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).
7
6
#include<iostream> #include<cstring> #include<string> #include<cstdio> #include<cmath> #include<algorithm> #include<iomanip> using namespace std; //int a[1000010],t; /*int main() { a[1]=1; a[2]=2; a[3]=2; for(int i=4;i<1000006;i+=4) { //a[i]=a[i+1]=(a[i-1]+i/2)%1000000000; //a[i+2]=a[i+3]=(a[i]+i/2)%1000000000; a[i]=a[i+1]=a[i-1]+i/2;//╧ФбиЁ╧╣вур╢Мак a[i+2]=a[i+3]=a[i]+i/2; } int n,sum; cin>>n; cout<<a[n]<<endl; //cout<<a[n]%1000000000<<endl; /*sum=0; t=a[n]; while(t) { t=t/10; //cout<<t<<endl; sum++; } //cout<<sum<<endl; /*if(sum<=9) cout<<a[n]<<endl; else if(sum==10) cout<<a[n]/10<<endl; else if(sum==11) cout<<a[n]/100<<endl; else if(sum==12) cout<<a[n]/1000<<endl; }*/ int a[1000010],n,i; int main() { a[1]=1; a[2]=2; for(i=3;i<=1000006;i++) { if(i%2) a[i]=a[i-1]; else a[i]=(a[i-1]+a[i/2])%1000000000; } while(cin>>n) cout<<a[n]<<endl; } //规律找错了,但是直到15都是对的,还有%10^9时每一步都弄而不是最后输出时才弄