这个题不难,但要仔细看,多领悟一下题的意思;
1,n不一定小于等于m;
2,对变量的定义用long long;
3,代码中每一个i使用时要用另一个变量来存,不然的话i值在最后计算完会一直返回1;
话不多说,上代码:
#include<stdio.h>
int main()
{
long long n,m;
long long n1,m1;
while(~scanf("%lld%lld",&n,&m))
{
if(n>m) {n1=m;m1=n;}
else {n1=n;m1=m;}
long long max=0,sum;
for(int i=n1; i<=m1; i++)
{
long long ans=1;
int k=i;`//第3点说的就是这里!!**!`**
while(k!=1)
{
if(k%2==0)
{
k/=2;
}
else
{
k=k*3+1;
}
ans++;
}
if(ans>max)
max=ans;
}
printf("%lld %lld %lld\n",n,m,max);
}
return 0;
}
如有不当之处,还望指出;