#include<iostream>
#include<map>
using namespace std;
std::map<int, int> g_Tb1;
int CycleLength(int n){
int &cl = g_Tb1[n];
if(cl == 0){
n = (n % 2 == 0) ? (n / 2) : (3 * n + 1);
cl = 1 + CycleLength(n);
}
return cl;
}
int main()
{
g_Tb1[1] = 1;
for(int nBeg, nEnd; cin >> nBeg >> nEnd;) {
int nOrgBeg = nBeg, nOrgEnd = nEnd, nMaxLen = 1;
if(nBeg > nEnd) swap(nBeg, nEnd);
for(int i = nBeg, nLen; i <= nEnd; ++i, nLen = 1) {
nLen = CycleLength(i);
if(nLen > nMaxLen) nMaxLen = nLen;
}
cout << nOrgBeg << " " << nOrgEnd << " " << nMaxLen << endl;
}
return 0;
}
uva100 3+1
最新推荐文章于 2022-01-16 16:13:21 发布
本文提供了一个使用C++编程语言解决数列最大循环长度问题的实例,通过实现一个函数来计算数列中每个数字的循环长度,并通过循环遍历指定范围内的数字来找出最大循环长度。
1153

被折叠的 条评论
为什么被折叠?



