找次數小於等於limit即可。
/* ACM 694 The Collatz Sequence
* mythnc
* 2011/11/08 10:21:28
* run time: 0.056
*/
#include <stdio.h>
int times(long long , int);
int main(void)
{
int a, limit, set;
set = 0;
while (scanf("%d %d", &a, &limit)
&& a > 0
&& limit > 0)
printf("Case %d: A = %d, limit = %d, number of terms = %d\n",
++set, a, limit, times(a, limit));
return 0;
}
/* times: return the term number of n */
int times(long long n, int limit)
{
int count;
count = 1;
while (n != 1) {
if (n % 2 == 1) {
n = 3 * n + 1;
if (n > limit)
break;
}
else
n >>= 1;
count++;
}
return count;
}
沒有留言:
張貼留言