本题实乃水题一个,但是wr了很多次,在c和c++徘徊后,发现原因在于c忘了加判断结束条件,而c++代码却过了。经过测试发现 while(cin〉〉x)中有EOF结束条件。也算是长知识了
c++
#include <iostream>
using namespace std;
int main()
{
int a,b,t,i,max;
while(cin >> a >> b)
{
cout << a << " " << b << " ";
if(a>b)//大小不确定
{
t = a;
a = b;
b = t;
}
max = 0;
for(i = a; i<=b; i++)
{
int n = i, sum = 1;
while(n-1)//等于1时就结束
{
if(n%2)
n = 3*n+1;
else
n = n/2;
sum++;
}
if(sum>max)
max = sum;
}
cout << max << endl;
}
return 0;
}
c语言#include<stdio.h>
int main()
{
int m,n,max,i,temp;
while(~scanf("%d%d",&m,&n))
{
printf("%d %d ",m,n);
if(m>n)
{
temp=m;
m=n;
n=temp;
}
max=0;
for( i=m;i<=n;i++)
{
int flag=i, sum=1;
while(flag-1)
{
if(flag%2)
{
flag=3*flag+1;
}
else
{
flag/=2;
}
sum++;
}
if(sum>max)
max=sum;
}
printf("%d\n",max);
}
return 0;
}