您的位置:首页 > 其它

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

2009-04-28 12:49 267 查看


B 数链问题(黄)

Time Limit:1000MS Memory Limit:65536K

Total Submit:236 Accepted:31

[b]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 [/b]

多组测试数据,每组一行,一行里有两个数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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐