uva-100
解题思路:
从小到大计算数列的长度(到一为止)。
注意如果a>b,也要计算。
代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
///////////////////////////////// //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; }