2008年10月30日 星期四

ACM100: The 3n + 1 problem


#include
using namespace std;
class n3plus1
{

public:
int GetMaxCycle(int i,int j)
{
int max=0;
int temp;
for(;i<=j;++i)
{
temp=GetCycle(i,0);
max=temp>max?temp:max;
}
return max;
}
int GetCycle(int n,int temp)
{
++temp;
if(n==1)
{
return temp;
}
else if(n%2==0)
{
return GetCycle(n/2,temp);
}
else
{
return GetCycle(n*3+1,temp);
}
}
};
int main(int argc, char *argv[])
{

int m,n,max,min;
n3plus1 obj;
while(true)
{
cin >> m >> n;
if(cin.eof())
{
break;
}
max=m>n?m:n;
min=m cout << m << " " << n << " " << obj.GetMaxCycle(min,max) << endl;
}
}

沒有留言: