13582659 | 694 | The Collatz Sequence | Accepted | ANSI C | 0.035 | 2014-05-03 19:59:05 |
类似于3n+1问题,只不过有上限
【解决过程】
有一个难点就是如果3n+1>2147483647怎么办?
我的方法见代码:
#include<stdio.h>
int main(){
int n=0,A,L;
while(scanf("%d%d",&A,&L)==2&&A>0&&L>0){
printf("Case %d: A = %d, limit = %d, number of terms = ",++n,A,L);
int s=1,a=0;
while(A<=L&&A!=1&&a<A){
if(A%2==0){
a=0;
A/=2;
s++;
}else{
a=A;
A=A*3+1;
if(A<=L&&a<A)s++;
}
}
printf("%d\n",s);
}
return 0;
}