切面条-简单数学模型

来源:互联网 发布:我知天下之中央 编辑:程序博客网 时间:2024/05/01 22:40
标题:切面条  
    一根高筋拉面,中间切一刀,可以得到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的次方

  1. #include <iostream>  
  2. #include <cmath>  
  3. using namespace std;  
  4.   
  5. int main(){  
  6.     int t1 = 1,t2 = 0,t3 = 1;  //初始状态
  7.     for(int i = 1; i <= 10; ++i){  
  8.         t3 += t2;  
  9.         t2 = t1;  
  10.         t1 = pow(2.0,double(i-1));//需注意,pow求次方的函数,两个参数均为double型,要强制转换  
  11.     }  
  12.     cout<<t1+t2+t3<<endl;  
  13.     return 0;  
  14. }  

0 0
原创粉丝点击