pc/uva 110101/100 3n+1 problem(已解决)

ansic C:

#include <stdio.h>

int iscorrect(int n);
int length1(int n);
void swap(int *p,int *q);

int main(){
      int i,j, m,n,flag,max;
    // char flag;
  while(scanf("%d %d",&i,&j) != EOF){ 
    max = 0;
    n = i;
    m =j;
    if (i > j)
       swap(&i,&j);
    if(iscorrect(i) && iscorrect(j) ){
                     while (i <= j){
                           flag = length1(i);
                            i++;
                             if(flag> max)
                                max = flag;              
                           }
           printf("%d %d %d\n",n,m,max);
         //  printf("\n");                   
           }
     else {
          printf("you inputting is error,please input again \n ");
          }     
                  
    }      
      //system("pause");
}
 int iscorrect(int n){
      if (n> 0 && n < 1000000)
           return 1;
       else 
           return 0;     
     }   
int length1(int n){
    int len;
    len = 1;
     while (n != 1){
            if(n % 2 == 0){
               len ++;
               n = n/2;
             }
             else {
                  n = 3*n +1;
                  len++;
                  }
           }
      return len;     
    } 
  void swap(int *p,int *q){
       int temp;
           temp = *p;
           *p = *q;
           *q = temp;
       }   

需要注意的问题是:对于整数i,j,他们之间大小没有确定,所以我们要判断哪个大,哪个小。

你可能感兴趣的:(pc/uva 110101/100 3n+1 problem(已解决))