一道算法题:最大循环长度,利用Python实现
题目描述
计算机科学中的问题通常被归类为属于特定类别的问题(例如NP,不可解决,递归)。在此问题中,您将分析一种算法的属性,该算法的分类对于所有可能的输入都不是已知的。
考虑以下算法:
1.输入
2.打印
3.如果n = 1,则停止
4.如果n为奇数,则n← 3n +1
5.其他n←n / 2
6.转到2
给定输入22,将打印以下数字序列
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
据推测,对于任何整数输入值,以上算法将终止(打印1时)。尽管算法很简单,但尚不清楚此猜想是否成立。但是,已经对所有整数n进行了验证,使得0 <n <1,000,000(实际上,还有更多的数字)。
给定输入n,可以确定在打印1(包括1)之前打印的数量。对于给定的n,这称为n的循环长度。在上面的示例中,循环长度22为16。
对于任何两个数字i和j,您将确定i和j之间(包括i和j)的所有数字的最大循环长度。
输入项
输入将由一系列整数对i和j组成,每行一对整数。所有整数将小于10,000且大于0。
您应该处理所有整数对,并为每对整数确定i和j之间(包括i和j)的所有整数的最大循环长度。您可以假定没有操作会溢出32位整数。
输出量
对于每对输入整数i和j,您应该输出i,