题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1032
心得:
输入范围【a,b】注意判断是否满足b>=a,返回值也要保证a在b前。
代码:
#include <iostream>
using namespace std;
int f(int n){
int sum=1;
while(n!=1){
if(n%2==1) n=3*n+1;
else n/=2;
sum++;
}
return sum;
}
int main(){
int a,b,c,i,max,flag;
while(cin>>a>>b){
flag=0;
if(b<a){
c=a;a=b;b=c;
flag=1;
}
max=0;
for(i=a;i<=b;i++){
c=f(i);
if(c>max) max=c;
}
if(flag==1) {c=a;a=b;b=c;}
printf("%d %d %d\n",a,b,max);
}
return 0;
}