UVA 694

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=635

这题是100的延伸,给一个数,和一个限制,求出这个数会停在规定步骤的第二步,或者超出限制数,最后

#include<stdio.h>
int main()
{
 long long a,b,n,js=1,A;//因题目给出的数据较大,所以用long long
 while(scanf("%lld%lld",&A,&b))
      {
       if(A<0&&b<0)
          break;
       n=1;
       a=A;
       while(a<=b&&a!=1)
           {
            if(a%2==0)
              a/=2;
            else if(a%2==1)
              a=3*a+1;
            n++;
           }      //按100的做法
       if(a>b)
         n--;//因为停在步骤2和步骤4的算法不大相同,所以这里减一
       printf("Case %lld: A = %lld, limit = %lld, number of terms = %lld\n",js++,A,b,n);
      }
 return 0;
}

  

给出步骤数

 

posted @ 2013-02-18 16:09  执着追求的IT小小鸟  阅读(125)  评论(0编辑  收藏  举报