POJ 1207水题

来源:互联网 发布:淘宝怎么买飞行员燃料 编辑:程序博客网 时间:2024/06/06 20:53

题意:题目首先给出一个循环公式,对于一个整数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;
}

原创粉丝点击