C1034 - 3n + 1问题

题目描述

考虑如下的序列生成算法:从整数n开始,如果是偶数,把它除以2;如果n是奇数,把它乘3加1。用新得到的值重复上述步骤,直到n=1时停止。

例如,n = 22时该算法生成的序列是:

22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

人们猜想(没有得到证明)对于任意整数n,该算法总能终止于n = 1。这个猜想对于至少1000000内的整数都是正确的。

对于给定的n,该序列的元素(包括1)个数被称为n的循环节长度。在上述例子中,22的循环节长度为16。

输入两个数i和j,你的任务是计算i和j(包含i和j)之间的整数中,循环节长度的最大值。

输入格式

第1行,两个正整数i和j,用空格分隔

输出格式

输出包括一行,先按原来输入的顺序输出i和j,然后输出两者之间的整数中的最大循环节长度,这三个整数用空格分隔

输入输出样例

输入样例 输出样例
1 10 1 10 20
100 200 100 200 125
210 201 210 201 89

数据范围与提示

100%的数据:$0 < i, j < 100000$

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1034.in,输出文件名为:C1034.out