每周一题 3n+1问题

3n+1问题

#include<iostream>
#include<math.h>
#include<map>
using namespace std;
map<int, int> visited;
int getlen(int n){
    if(visited[n]==0)
        visited[n]=(n%2==0?1+getlen(n/2):1+getlen(3*n+1));
    return visited[n];
}
int main(){
    int a, b;
    visited[1]=1;
    while(1){
        int maxn=-1;
        if(cin>>a&&cin>>b){
            int m=max(a,b), n=min(a,b);
            for(int i=n; i<=m; i++)
            maxn=max(maxn, getlen(i));
            cout<<a<<" "<<b<<" "<<maxn<<endl;
        }else
            break;  
    }   
    return 0;
} 

猜你喜欢

转载自www.cnblogs.com/A-Little-Nut/p/10311523.html
今日推荐