【简单】算法题——切面条

1.切面条

一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?

分析

如图:




  • 折叠一次:如图,一刀2条直的面条,得2
  • 折叠二次:如图,除了2条直的面条,又多剪出了1个尖角,得3
  • 每相交的两条面条会通过折叠产生一个尖角
  • 折叠三次:如图,除了2条直的面条和第二次折叠产生得1个尖角,又多剪出了2个尖角,得5
  • 折叠四次:如图,除了2条直的面条和第二次折叠产生得1个尖角和第三次折叠产生的2个尖角,又多剪出了4个尖角,得9

分别是:

  • 2=2
  • 2+20=3
  • 2+20+21=5
  • 2+20+21+22=9

第十次:
2+20+21+22……+28

代码实现

#include <stdio.h>
 int main()
 {	
     int i,a,sum;	
     a=1,sum=2;	
     for(i=0;i<10;i++)	
 {		
          sum+=a;		
          a=a*2;	
 } 	
     printf("%d",sum); 	
     return 0;
 }

结果:1025

分析2

也可以直接从数字找到规律
折叠一次:2
折叠两次:3
折叠三次:5
折叠四次:9
规律:每一次的值都等于上一次值的二倍减去1

代码实现

#include <stdio.h> 
int main() 
{	     
    int i,sum=2;	     	     
    for(i=0;i<10;i++)	 
{		          
        sum=sum*2-1;	 
} 	     
    printf("%d",sum); 	     
return 0; 
}

结果:1025


版权声明:本文为qq_45838752原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。