#667. 3n+1数链问题
3n+1数链问题
Description
在计算机科学上, 有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况下我们并不知道哪一类问题可以解决,哪一类问题不可解决。现在我们就有这样一个问题,问题如下:
(1) 输入一个正整数 n;
(2) 把 n 显示出来;
(3) 如果 n=1则结束;
(4) 如果 n 是奇数则 n 变为 3*n+1 ,否则 n 变为 n/2;
(5) 转入 (2) 步.
例如对于输 入的正整数 22,应该有如下 数列被显示 出来:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
我们推测:对于任意一个正整数,经过以上算法最终会推到 1 。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机, 我们验证了对于小于1000000的正整数都满足以上推测。
对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16.
你的任务是编写一个程序,对于任意一对正整数 i 和 j , 给出 i 与 j 之间的最长链长,当然这个最长链长是由 i 与 j 之间的其中一个正整数产生的。我们这里的 i 和 j 既包 括 i 也包括 j 。
Input Format
只有一 行,二个正整数 i 和 j , i 和 j 之间 以一个空格隔开。 0<i<=j<1000 。Output Format
只有一行, 一个正整数 , 即为 i 与 j 之间的最长链长。(最长链长保证在 150 以内)1 10
20