切面条-简单数学模型
2016-03-13 19:22
225 查看
标题:切面条
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。
解法:
一刀切下去有三部分,不管是对折的几次都是分三部分(如下图),那么假设第一部分为t1,第二部分是t2,第三部分是t3.
设当前折的参数为t1,t2,t3,下一折的参数为t1',t2',t3'
我们发现,下一折的
t3'=t3+t2,即当前折的t2并到当前的t3中,形成了新t3,
t2'=t1,当前折的t1移动2处变成t2
t1'=2^(n-1),每折一次,1处的褶都为2的次方
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int t1 = 1,t2 = 0,t3 = 1;
//初始状态
for(int i = 1; i <= 10; ++i){
t3 += t2;
t2 = t1;
t1 = pow(2.0,double(i-1));//需注意,pow求次方的函数,两个参数均为double型,要强制转换
}
cout<<t1+t2+t3<<endl;
return 0;
}
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。
解法:
一刀切下去有三部分,不管是对折的几次都是分三部分(如下图),那么假设第一部分为t1,第二部分是t2,第三部分是t3.
设当前折的参数为t1,t2,t3,下一折的参数为t1',t2',t3'
我们发现,下一折的
t3'=t3+t2,即当前折的t2并到当前的t3中,形成了新t3,
t2'=t1,当前折的t1移动2处变成t2
t1'=2^(n-1),每折一次,1处的褶都为2的次方
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int t1 = 1,t2 = 0,t3 = 1;
//初始状态
for(int i = 1; i <= 10; ++i){
t3 += t2;
t2 = t1;
t1 = pow(2.0,double(i-1));//需注意,pow求次方的函数,两个参数均为double型,要强制转换
}
cout<<t1+t2+t3<<endl;
return 0;
}
相关文章推荐
- 深入理解C++中的mutable关键字 http://no001.blog.51cto.com/1142339/389840/
- HDOJ 1166 敌兵布阵(一维树状数组)
- JS-DOM Element方法和属性
- TCP粘包/拆包问题的解决
- Mybatis第三弹
- C语言之二分查找
- TCP四次握手释放连接
- AndroidStudio文件夹结构视图讲解
- Android中的一些基础知识(二)
- Linux内核分析实验三----跟踪分析Linux内核的启动过程
- netty在游戏服务器开发中的应用(一)
- 《leetCode》:Evaluate Reverse Polish Notation
- 腾讯历年笔试题
- replace 全局替换 和 数组去空
- JDBC使用数据库来完成分页功能
- ZOJ-3490-String Successor【8th浙江省赛】【模拟】
- UVA1152 4 Values whose Sum is 0
- java学习之(一) 基本数据及语法
- WDF驱动学习:驱动对象,设备对象(二)
- HTTP 2.0的那些事