uva-100

解题思路:

从小到大计算数列的长度(到一为止)。

注意如果a>b,也要计算。

 

代码

/////////////////////////////////
//UVA 100 - the 3n + 1 problem 
//                               
//DATA 2016/10/27      
//
//TIME 310ms                   
/////////////////////////////////

#include<iostream>
#include<algorithm>
using namespace std;

int a, b;
int max_len;

int main()
{
    while (cin >> a >> b) {
        //要从小到大存下a、b的值
        int start, end;
        start = min(a, b);
        end = max(a, b);
        //计算[start, end]之间的最长长度
        max_len = 0;
        for (int i = start; i <= end; i++) {
            int now_len = 0;
            int now_value = i;
            while (now_value != 1) {
                now_len++;
                if (now_value % 2 == 0)
                    now_value /= 2;
                else 
                    now_value = now_value * 3 + 1;
             }
            //数列最后的‘1’也要加上
             now_len++;
            if (now_len > max_len) max_len = now_len;
        }
        cout << a << ' ' << b << ' ' << max_len << endl;
    }
    return 0;
}
View Code

 

posted @ 2016-10-27 14:34  啊嘞  阅读(212)  评论(0编辑  收藏  举报