Mister-小方


私信TA

用户名:1104986125

访问量:250379

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 37264
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

解题思路:
首先咱们得知道题目是什么意思:

题目描述

考虑下面的算法来生成一个数字序列。从整数n开始。如果n是偶数,除以2。如果n是奇数,乘以3加1。用n的新值重复这个过程,当n=1时终止。例如,以下序列将生成n=22:22=11-34-52-26-13-40-17-20-10-5-16-8-4-2-1-推测(但尚未证明)该算法将以n=1为每个整数n终止.尽管如此,该猜想仍然适用于至少1, 000,000的所有整数。对于输入n,n的循环长度是生成并包括1的数的个数。在上面的例子中,22的循环长度是16。给定任意两个数字i和j,您将确定i和j之间所有数字的最大循环长度,包括两个端点。

输入

输入将由一对整数i和j组成,每行一对整数。所有的整数都小于1000000,大于0。

输出

对于每一对输入的整数i和j,输出I、J在相同的顺序出现在输入然后整数之间的最大周期长度和包括我和J这三个数字由一个空格隔开,所有三个数字一行,在每一行输入输出。
参考代码:

#include<stdio.h>
int main()
{
    int i,j,k,s,t,max;
    while(scanf("%d%d",&i,&j)==2) 
    {
        printf("%d %d ",i,j); // 先把i和j输出
        if(i>j){max=i;i=j;j=max;} // 如果i大于j,交换他们的位置
        max=0;
        for(k=i;k<=j;k++)
        {
            s=0;   //步数初始化
            t=k;   //
            while(t!=1)  //知道t为1时结束
            {
                if(t%2==0)     //t是偶数
                {
                    t=t/2;  //除以2
                    ++s;   //循环步数加1
                }
                else           //奇数
                {
                    t=(3*t+1); //乘3加1
                    ++s;   //循环步数加1
                }
            }
            ++s;   //循环步数加1
            if(s>max)
            {
                max=s;
            }
        }
        printf("%d\n",max); // 补充最大值
    }
    return 0;
}

看看大家还有什么不懂得,请在下方评论区留言

 

0.0分

4 人评分

  评论区

楼主们,过了吗?我很好奇
2019-09-07 00:12:57
楼主测一下
1 1000000
2019-07-01 09:22:21
楼主,我想请问下,我这代码为啥会编译错误?
#include<stdio.h>
int mark(int n)
{

int count=1;
while(n!=1)
{
if(n%2==0)
n=n/2;
else
n=n*3+1;
count++;
}
return count;
}
int main()
{
 int i,j,temp,max,t;bool f=false;
 scanf("%d %d",&i,&j);
if(i>j)
{
              temp=i;
            i=j;
            j=temp;

}
 max=mark(i);
 for(t=i+1;t<=j;t++)
 
 {
  
  if(max<mark(t))
  max=mark(t);
 }
if(f){
             temp=i;
            i=j;
            j=temp;
            f=false;
}
 printf("%d %d %d\n",i,j,max);
return 0;
}
2019-01-07 09:41:19
楼主试一下包含113383,134379,138367等的数据,,会卡死。。233333333
2017-08-03 23:18:32
  • «
  • 1
  • »