UVa 100 3n+1 Problem

UVa 100 3n+1 Problem

刚刚开始被迫做英文题目,见识到了英文题目的BT,下定决心好好学英文。

此题需要注意:题目中并没有说i<=j。

以下是我的代码:

#include < stdio.h >
long  f( long  n)
{
    
long r=1;
    
while(n!=1)
    
{
       
if(n%2==1)
       
{
          n
=(n*3+1)/2;r+=2;
       }

       
else
       
{
          n
=n/2;r++;
       }

    }

    
return r;
}

int  main()
{
    
long i,j;
    
while(scanf("%ld%ld",&i,&j)==2)
    
{
       
long ans=0;
       
bool change=false;
       
if(i>j)
       
{
          
long t=i;i=j;j=t;
          change
=true;
       }

       
for(long k=i;k<=j;k++)
       
{
          
long tmp=f(k);
          
if(tmp>ans) ans=tmp;
       }

       
if(!change)
         printf(
"%ld %ld %ld\n",i,j,ans);
       
else printf("%ld %ld %ld\n",j,i,ans);
    }

return 0;
}

你可能感兴趣的:(UVa 100 3n+1 Problem)