全解题报告索引目录 -> 【北大ACM – POJ试题分类】
转载请注明出处:http://exp-blog.com
-------------------------------------------------------------------------
大致题意:
根据给定的算法,可以计算一个整数的循环数
现在给定一个区间,计算这个区间的所有数的循环数,把最大的循环数输出
PS:输出的是整数A的循环数,而不是输出整数A
解题思路:
好吧,我承认是在找题时,因为输错题号而碰到的水题,顺手A的,没难度,暴力即可。
注意的只有一点:
输入的两个区间端点不一定是从小到大输入的,因此要先对这两个数排一下序。
//Memory Time
//256K 0MS
#include<iostream>
using namespace std;
int CycleNum(int i)
{
int count=1;
while(i!=1)
{
if(i%2)
i=3*i+1;
else
i/=2;
count++;
}
return count;
}
int main(void)
{
int a,b;
while(cin>>a>>b)
{
int x=a<b?a:b;
int y=a>b?a:b;
int MaxCycle=0;
for(int i=x;i<=y;i++)
{
int temp=CycleNum(i);
if(MaxCycle<temp)
MaxCycle=temp;
}
cout<<a<<' '<<b<<' '<<MaxCycle<<endl;
}
return 0;
}