Give me the answer
时间: 1ms 内存:32M
描述:
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 thatsum to 7:1) 1+1+1+1+1+1+12) 1+1+1+1+1+23) 1+1+1+2+24) 1+1+1+45) 1+2+2+26) 1+2+4Help FJ count all possible representations for a given integer N (1 <= N <= 1 ,000,000)
输入:
The first line of the input contains the number of test cases in the file. And t he first line of each casecontains one integer numbers n
输出:
For each test case, output a line with the ans % 1000000000.
示例输入:
1
7
示例输出:
6
提示:
参考答案(内存最优[4908]):
#include<stdio.h>
int main()
{
int a[1000000];
int n;
scanf("%d",&n);
while(n--)
{
int s;
scanf("%d",&s);
a[1]=1;
int i;
a[2]=2;
a[3]=2;
for(i=4;i<=s;i++)
a[i]=(a[i-2]+a[i/2])%1000000000;
printf("%d\n",a[s]%1000000000);
}
return 0;
}
参考答案(时间最优[8]):
#include <iostream>
using namespace std;
long long a[1000001];
int main()
{
long long N,T,i;
a[1]=1;
a[2]=2;
for(i=3; i<1000001; i++)
{
if(a[i]%2==1)
a[i]=a[i-1];
else
a[i]=a[i-2]+a[i/2];
a[i]%=1000000000;
}
cin>>N;
while(N--)
{
cin>>T;
cout<<a[T]<<endl;
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。