好吧,即使看到是UVA的题,也还是被坑到了,两个陷阱,一个是要注意i和j的大小问题,另一个是i和j要原样输出。然后就是根据题意把程序编出来,代码如下:
#include <iostream>
using namespace std;
long judge(long n)
{
long count=0;
while(n!=1){
count++;
if(n%2==1) n=3*n+1;
else n>>=1;
}
return count+1;
}
int main()
{
long i,j;
while(cin>>i>>j){
bool mark=false;
if(j<i) {int t=i;i=j;j=t;mark=true;}
long result=0;
for(long k=i;k<=j;k++){
long t=judge(k);
result=result>t?result:t;
}
if(mark) cout<<j<<" "<<i<<" "<<result<<endl;
else cout<<i<<" "<<j<<" "<<result<<endl;
}
return 0;
}