“树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛B 数链问题(黄)

 

B 数链问题(黄)

Time Limit:1000MS  Memory Limit:65536K
Total Submit:236 Accepted:31

Description

在计算机科学上,很多类问题是无法解决的,我们称之为不可解决问题。然而我们不知道哪一类问题可以解决。现在有这样一个问题……
这是一个古老的猜想:给定任何一个正整数n,对它进行以下操作:
n是偶数:n=n/2
n是奇数:n=3*n+1
这样经过多步操作后,最后必定变为1
如对13进行操作: 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
一共经历了9次操作,则称13这个数的周期是9。
过程图:

Input

多组测试数据,每组一行,一行里有两个数m和n,请你找出m和n之间(包括m,n)的周期最大的数的周期
其中m,n均小于100000
输入0 0 结束

Output

m,n之间周期最大的数的周期,一个结果单独占一行.

Sample Input

1 10
            2 3
            30 100
            0 0

Sample Output

19
            7
            118
#include <iostream>
            using namespace std;
            int zhouqi(int);
            int main()
            {
            int m, n, time, temp,i;
            while (cin >> m >> n && (m != 0 && n != 0))
            {
            if (m > n)
            {
            temp = m;
            m = n;
            n = temp;
            }
            for (time = 0, i = m;i <= n ;++i )
            {
            temp = zhouqi(i);
            if (temp > time)
            {
            time = temp;
            }
            }
            cout << time << endl;
            }
            return 0;
            }
            int zhouqi(int m)
            {
            int i = 0;
            while (m != 1)
            {
            if (m % 2)
            {
            m = 3 * m + 1;
            }
            else
            {
            m = m / 2;
            }
            i++;
            }
            return i;
            }

原文地址:https://www.cnblogs.com/anderson0/p/1445335.html