这题倒没什么难度,有一个坑就是输入的两个数不一定是顺序的,闲着也是闲着,写点uva练练手吧,争取每天一题吧
#include <iostream>
using namespace std;
class CycleNumber
{
public:
void ComputeCycleNumber(int iStart, int iEnd);
void OutputResult();
private:
int m_iStart = 0;
int m_iEnd = 0;
int m_iCount = 0;
};
void CycleNumber::ComputeCycleNumber(int iStart, int iEnd)
{
m_iStart = iStart;
m_iEnd = iEnd;
if (iStart > iEnd)
{
swap(iStart, iEnd);
}
m_iCount = 0;
for (int i = iStart; i <= iEnd; ++i)
{
int iNumber = i;
int iCount = 1;
while (iNumber != 1)
{
if (iNumber & 1 == 1)
{
iNumber = iNumber * 3 + 1;
}
else
{
iNumber /= 2;
}
++iCount;
}
if (m_iCount <= iCount)
{
m_iCount = iCount;
}
}
}
void CycleNumber::OutputResult()
{
cout << m_iStart << " " << m_iEnd << " " << m_iCount << endl;
}
int main()
{
int iStart = 0;
int iEnd = 0;
CycleNumber cycleNumber;
while (cin >> iStart >> iEnd)
{
cycleNumber.ComputeCycleNumber(iStart, iEnd);
cycleNumber.OutputResult();
}
return 0;
}