题意:题目首先给出一个循环公式,对于一个整数n,当n为奇数时,n=3n+1,当n为偶数时,n=n/2,如此循环下去直到n=1时停止。现题目要求对任意输入的两个整数i、j,输出i、j之间(包括i、j)的所有数进行上述循环时的最大循环次数(包括n和1)。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,j;
while(cin>>i>>j)
{
cout<<i<<' '<<j<<' ';
if(i>j) swap(i,j);
int max=0,k;
for(k=i;k<=j;k++)
{
int sum=1,p=k;
while(p!=1)
{
sum++;
if(p&1) p=3*p+1;
else p/=2;
}
if(max<sum) max=sum;
}
cout<<max<<endl;
}
return 0;
}