题意:x%2==1 x=x*3+1 , x%2==0 x=x/2; 对于确定的x,有确定的循环次数,问共几次。 例如2 . 2 1 cnt=2。

思路: 暴力,因为1e6也才循环了153次,所以复杂度必定不高。

注意细节: 对于这种有关l,r输入的题,下意识的就要去判断l,r的关系,这和最短路中用邻接矩阵去保存数据的时候,也要这样做。以免万一,有时候就会出这种地方的bug,所以还是日积月累把

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int ans=-INT_MAX;

int solve(int x)
{
    int cnt=0;
    while(x!=1)
    {
        if(x%2==0) x/=2;
        else    x=x*3+1;
        cnt++;
    }
    return cnt+1;
}

int main(void)
{
    int l,r;
    while(cin >> l>> r)
    {
        int ll=l,rr=r;
        if(l>r) swap(l,r);
        ans=0;
        for(int i=l; i<=r; i++)
        {
            ans=max(ans,solve(i));
        }
        printf("%d %d %d\n",ll,rr,ans);
    }
}