版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Fitz1318/article/details/86020956
题目链接:http://poj.org/problem?id=1207
大致题意:给定算法,可以计算一个整数的循环数。现在给定两个数x,y,求这包括整两个数之间的整数的最大循环数。
解题思路: ①写出计算循环数的算法
②注意输入的数不一定是从小到大,首先要对输入的两个数进行排序。
③做一个循环找出这两个之间所有整数的最大循环数
AC代码:
#include<iostream>
using namespace std;
int CycleLength(int i)
{
int length = 1;
while(1)
{
if(i==1)
break;
else if(i%2==0)
i = i / 2;
else
i = i * 3 + 1;
length++;
}
return length;
}
int main()
{
int a,b;
while(cin>>a>>b)
{
int i;
int x = a<b?a:b;
int y = a>b?a:b;
int MaxLength = 0;
for(i=x; i<=y; i++)
{
int temp = CycleLength(i);
if(temp>=MaxLength)
MaxLength = temp;
}
cout << a<<' '<<b <<' '<<MaxLength<<endl;
}
return 0;
}