Sumsets
Time Limit : 6000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 20 Accepted Submission(s) : 14
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
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).
Input
Output
Sample Input
7
Sample Output
6
Source
解题报告:
题目大意就是将一个整数拆分为只有 1 或者 有 1 和偶数组分的几个数的和;
例如 :整数 7;
进过分析可得出:
结论是:当整数n为奇数时,相当于在f[n-1]的拆分结果上增加一个 1 即可;
当整数n为偶数时,分为两种情况,含有1 ,和不含有1;
含有1时,就是f[n-1],不含1时,就是f[n/2](拆分结果都除以2)的结果
综上结果,得出打表公式:
f[1]=1; f[2]=2;
f[n]=f[n-1] //n是奇数
f[n]=f[n-1]+f[n/2] //n是偶数
#include<stdio.h>
#include<string.h>
__int64 f[1000010];
int main()
{
int i,j;
int n;
f[1]=1;
f[2]=2;
for(i=3;i<=1000000;i++)
{
if((i&1)==0)//i是偶数
{
f[i]=(f[i-1]+f[i/2])%1000000000;
}
else
{
f[i]=f[i-1]%1000000000;//应题目要求,最多输出九位数,
}
}
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",f[n]);
}
return 0;
}
Sumsets
Time Limit : 6000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 20 Accepted Submission(s) : 14
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
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).
Input
Output
Sample Input
7
Sample Output
6
Source
解题报告:
题目大意就是将一个整数拆分为只有 1 或者 有 1 和偶数组分的几个数的和;
例如 :整数 7;
进过分析可得出:
结论是:当整数n为奇数时,相当于在f[n-1]的拆分结果上增加一个 1 即可;
当整数n为偶数时,分为两种情况,含有1 ,和不含有1;
含有1时,就是f[n-1],不含1时,就是f[n/2](拆分结果都除以2)的结果
综上结果,得出打表公式:
f[1]=1; f[2]=2;
f[n]=f[n-1] //n是奇数
f[n]=f[n-1]+f[n/2] //n是偶数