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

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:11   1443   0
解题思路:

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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP