蓝桥杯—母牛的故事
来源:互联网 发布:6s邮件126的smtp端口 编辑:程序博客网 时间:2024/05/22 12:57
蓝桥杯—母牛的故事
时间限制: 1Sec 内存限制: 128MB
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(n最小是0,最大是55),含义如题目中描述。n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。
样例输入
2
4
5
0
样例输出
2
4
6
分析
/* 年份 母牛数量 1 i = 1 2 i+i1 = 2 3 i+i1+i2 = 3 4 i+i1+i2+i3 = 4 5 i+i1+i2+i3+i4+i11 = 6 6 i+i1+i2+i3+i4+i5+i11+i12+i21 = 9 . . . . 最初的母牛起名为i i生的小牛起名为i1,i2,i3,i4 in生的小牛起名为in1,in2,in3 ... ... 规律,从第五年开始,每一年等于(前一年)加上(前三年)的数量*/
参考程序
//数组方法#include <iostream>using namespace std;void main(void){ int n; int sum[56] = {0,1,2,3,4}; for(int i = 5;i<=55;i++) { sum[i] = sum[i-1]+sum[i-3];//提前将所有的值全部计算出来 } while(cin>>n&&n!=0)//重点,输入n,同时判断输入的n是否为0,类似于c语言的(scanf("%d",&n)!=0) { cout<<sum[n]<<endl; }}
//递归方法 这种方法一般会超时,不建议#include <iostream>using namespace std;int fun(int n);void main(void){ int n; while(cin>>n&&n!=0) { cout<<fun(n)<<endl; }}int fun(int n){ if(n<=4) { return n; } else { return fun(n-1)+fun(n-3); }}
//迭代方法#include <iostream>using namespace std;void main(void){ int n; int f1,f2,f3,fn; while(cin>>n&&n!=0) { f1 = 1; f2 = 2; f3 = 3; if(n<=3) { cout<<n<<endl; } else { for(int i = 4;i <= n;i++) { fn = f3 + f1; f1 = f2; f2 = f3; f3 = fn; } cout<<fn<<endl; } }}
总结
此题类似于斐波那契数列,进行了变形
阅读全文
1 0
- 蓝桥杯—母牛的故事
- 母牛的故事(蓝桥杯)
- hdu2018——母牛的故事
- 2018——母牛的故事
- 15HD_OJ——母牛的故事
- HDU——2018 母牛的故事
- 母牛的故事
- hdu_2018_母牛的故事
- HDOJ2018 母牛的故事
- 母牛的故事
- 2018 母牛的故事
- HDOJ2018 母牛的故事
- hdu2018母牛的故事
- HDU_2018 母牛的故事
- hdoj_2018 母牛的故事
- 母牛的故事
- 母牛的故事
- hdu-母牛的故事
- Class.getResourceAsStream和ClassLoader.getResourceAsStream
- Unity3D -- 自动生成动画控制器(AnimationController)
- Spring的AOP详解
- js日期转成2017-12-05形式的字符串简单方法
- java中关于log日志
- 蓝桥杯—母牛的故事
- 笔记-MVVM模式
- Java基础之反射知识点总结
- 支持正则表达式的 String 对象的方法
- Hadoop2.7.3搭建单机、伪分布环境
- SPARK 推荐算法
- 织梦DEDE全部标签调用方法和说明
- Win10+vs2013+x265源代码编译
- 美国通过税改法案,对我们平时购物居然也有影响