A1031 The 3n+1 problem (3n+1 问题)

来源:互联网 发布:python thread sleep 编辑:程序博客网 时间:2024/04/30 09:48
解题思路:

1:所给定的值如i,如果它是偶数除以2,否则乘以3加上1,如此重复若i=1,则循环停止;

2、   i的取值范围在a~n之间,求i在其范围内最长的长度;
注意几点:  
1、用户输入的a与n的值大小不确定可能需要交换值;

2、求其范围内最长的长度,则需先求出其范围内每个取值所会有的长度(计数)count,与其预定的最长长度sum比较若count>sum,则令count=sum,循环多次比较,即可得到范围内最大的长度

3、多次数值测试

    
      

#include<stdio.h>int main(){    int a,b,t,count; while(scanf("%d %d",&a,&b)){int max=0;if(a>b) {t=a;a=b;b=t; }   for(int i=a;i<=b;i++)  {int m=i;count=1;while(m-1)// m=1时停止 {if(m==1) return 1;else if(m%2==1) m=m*3+1;else  m=m/2;count++;    }  if(max<count)   max=count;  }  printf("%d %d %d",a,b,max);     } return 0;}


0 0
原创粉丝点击