本文主要是介绍POJ 1207水题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:题目首先给出一个循环公式,对于一个整数n,当n为奇数时,n=3n+1,当n为偶数时,n=n/2,如此循环下去直到n=1时停止。现题目要求对任意输入的两个整数i、j,输出i、j之间(包括i、j)的所有数进行上述循环时的最大循环次数(包括n和1)。
思路:水题但是确实中了陷阱了,唉,比较i,j然后交换以后就错了,题目要求原样输出,果断中了陷阱…………改为一输入就输出就对了……难过…………
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b)
{
cout<<a<<' '<<b<<' ';
if(a>b) swap(a,b);
int i,m=-1,p;
for(i=a;i<=b;i++)
{
p=i;
int n=1;
while(p!=1)
{
if(p%2==0) p/=2;
else p=3*p+1;
n++;
}
if(m<n) m=n;
}
cout<<m<<endl;
}
return 0;
}
这篇关于POJ 1207水题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!