本来以为是要打表才能过,但是看了别人的题解才发现直接暴力就行。
这道题还有比较坑额地方就是输入的n,m居然不一定是m>n,所以自己要加上一个判断
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <map>
#include <cmath>
using namespace std;
#define ll long long int
int main()
{
ll maxcnt;
int n,m;
while(EOF!=scanf("%d %d",&n,&m))
{
cout << n << ' ' << m << ' ';
int i,j;
maxcnt=0;
if(n>m){
int t=n;
n=m;
m=t;
}
for(i=n;i<=m;i++){
ll cnt=0;
int temp=i;
while(1!=temp)
{
if(0==temp%2){
temp/=2;
}else{
temp=temp*3+1;
}
cnt++;
}
if(maxcnt<cnt){
maxcnt=cnt;
}
}
cout << maxcnt+1 << endl;
}
return 0;
}