您的位置:首页 > 其它

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

2013-09-10 15:09 351 查看
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,他们之间大小没有确定,所以我们要判断哪个大,哪个小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: