hdu 2018 母牛的故事
2013-07-26 17:35
232 查看
母牛的故事
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 21 Accepted Submission(s) : 14
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。
Sample Input
2 4 5 0
Sample Output
2 4 6
Author
lcySource
C语言程序设计练习(三)题目乍一看挺容易的(其实也不难,就看你想不想的到了),当去推导时,发现结果是:
1,2,3,4,6,9,13,19,28,41,60,88,129.....
推导过程是:
母牛[A.s] 一岁[A.a] 两岁[A.b] 三岁[A.c] 四岁[A.d] 共计[A.sum]
1 1 0 0 0 0 1
2 1 1 0 0 0 2=1+1
3 1 1 1 0 0 3=1+1+1
4 1 1 1 1 0 4=1+1+1+1
5 2=1+1 2=1+1 1 1 1->1+1 6=2+2+1+1
6 3=2+1 3=2+1 1+1 1 1->1+1 9=3+3+2+1
7 4=3+1 4=3+1 2+1 1+1 1->1+1 13=4+4+3+2
8 6=4+2 6=4+2 3+1 2+1 1+1->2+2 19=6+6+4+3
9 9=6+3 9=6+3 4+2 3+1 2+1->3+3 28=9+9+6+4
........
A
.s=A[n-1].s+A[n-1].c;
A
.a=A[n-1].a+A[n-1].c;
A
.b=A[n-1].a;
A
.c=A[n-1].b;
当n>=2时,A
.s=A
.a;
仔细看规律,
横着看发现:s
=2*s[n-3] + s[n-4] + s[n-5]
竖着看发现:s
=s[n-1]+s[n-3]
#include <stdio.h> int main() { int m,n,i,j,tot; __int64 a[56]; a[1]=1;a[2]=2;a[3]=3,a[4]=4; for (i=5;i<56;i++) { a[i]=a[i-1]+a[i-3]; } while (scanf("%d",&n)!=EOF) { if(n==0) break; tot=0; printf("%I64d\n",a ); } return 0; }
相关文章推荐
- hdu 2018 母牛的故事 动态规划--简单
- SDUT_母牛的故事_递推
- 2018 母牛的故事
- hdoj-2018 母牛的故事【水&&递归】
- HDOJ 2018 母牛的故事
- 1004: 母牛的故事
- 函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事
- HDOJ 2018 母牛的故事
- HDU 2018 母牛的故事(简单动态规划)
- 杭电--2018--母牛的故事--水题
- A - 母牛的故事
- HDU2018母牛的故事
- 母牛的故事
- 母牛的故事
- HDU2018 母牛的故事 动态规划入门-递推
- HDU 2018 - 母牛的故事( 递推 )
- 理工大学ACM平台题答案关于C语言 1243 母牛的故事
- PAT乙级(Basic Level)练习题 母牛的故事
- 母牛的故事
- HDU1003母牛的故事