UVA 371 - Ackermann Functions

同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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章