hdu 1032 The 3n + 1 problem

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1032


数据太弱了。。。开始我以为还要从后面往前面推。。

哪知道可以直接暴力。。


下面是AC代码

#include <iostream>
#include <cmath>
using namespace std;
void swap( int &a, int &b )
{
    int temp= a;
    a= b;
    b= temp;
}

int get(__int64 x )
{
    int cnt= 1;
    while( x!= 1 )
    {
        if( x& 1 )
        {
            x= 3* x+ 1;
        }
        else
        {
            x>>= 1;
        }
        cnt++;
    }
    return cnt;
}

int main(  )
{
    int l, r;
    while( scanf( "%d %d", &l, &r )!= EOF )
    {
        int max= -1;
        int ll= l, rr= r;

        if( ll> rr )
        {
            swap( ll, rr );
        }
        for( int i= ll; i<= rr; ++i )
        {
            int temp= get( i );
            max= max> temp? max: temp;
        }
        printf( "%d %d %d\n", l, r, max );
    }
    return 0;
}


你可能感兴趣的:(hdu 1032 The 3n + 1 problem)