这题属于比较简单的题目(¯▽¯;)
解题步骤
- 先将i,j按照大小排好顺序
- 用迴圈从i到j依序判断最终变成1的次数,并将大于max的替换为max
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,tim,I,max,count,c;
while(scanf("%d %d",&i,&j)==2){
max=0;
//让j>i
if(i>j){
c=i;
i=j;
j=c;
}
//i到j依序判断,若次数比max多就替换
for(tim=i;tim<=j;tim++){
I=tim;
count=0;
while(I!=1){
if(I%2==0)
I/=2;
else if(I%2!=0)
I=3*I+1;
count++;
}
if(max<count)
max=count;
}
printf("%d %d %d",i,j,max+1);
}
return 0;
}