ganmu


私信TA

用户名:dotcpp0726067

访问量:3470

签 名:

等  级
排  名 1522
经  验 2809
参赛次数 0
文章发表 104
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

利用for循环逐个遍历输入数之间的数,计算每一个数的周期,找到最大周期即可

注意事项:
本题有一个坑,输入的第一个数不一定是大于第二个数的,所以需要找到输入两数中的较大值与较小值

参考代码:

#include<iostream>

using namespace std;

int main() 

{

    int a, b;//用于接收用户输入的数据

    int k = 1;//用于找到每一个数的周期长度

    int l = 0;//用于记录最大周期长度

    while (cin >> a >> b)

    {

        for(int i=min(a,b);i<max(a,b)+1;i++)//用i接收输入数中的最小数

        {

            int j = i;

            while(j!=1)//当最后数值为1时进入下一个数的计算

            {

                if (j % 2 == 0)//偶数

                {

                    j = j / 2;

                    k++;//周期+1

                }

                else if (j % 2 != 0)//奇数

                {

                    j = j * 3 + 1;

                    k++;

                }

            }

            if (k > l)l = k;//拿到最大周期数

            k = 1;//重置k值

        }

        cout << a << " " << b << " " << l << endl;

        l = 0;//重置l值

    }

    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »