同uva100,也是经典的3n+1问题,注意本题数字1运行3次,博主因为这个5次WA,很难受
代码如下:
#include <iostream>
using namespace std;
int A(long long a)
{
int n=0;
if(a==1)
return 3;
while(a-1) //使用三目运算符进行判断,循环直到1为止
{
a=a%2?(a*3+1):(a/2);
n++;
}
return n;
}
int main()
{
int a,b,i,Max,number,c;
while(cin>>a>>b&&(a+b))
{
Max=0;
if(a>b)
{
c=a;
a=b;
b=c;
}
if(!a)
a++;
cout<<"Between "<<a<<" and "<<b<<", ";
for(i=a; i<=b; i++)
if(A(i)>Max)
{
Max=A(i);
number=i;
}
cout<<number<<" generates the longest sequence of "<<Max<<" values."<<endl;
}
return 0;
}