经典的3n+1题,注意使用long long防止数据溢出。
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
int A(long long a,long long b)
{
int n=0;
while(a-1) //使用三目运算符进行判断,循环直到1为止
{
a=a%2?(a*3+1):(a/2);
n++;
if(a>b)
return n;
}
return ++n;
}
int main()
{
int number=1,a,b;
while(cin>>a>>b&&(a+1)&&(b+1))
{
cout<<"Case "<<number++<<": A = "<<a<<", limit = "<<b<<", number of terms = "<<A(a,b)<<endl;
}
return 0;
}