继续做白书的题,发现基础还得补。这道题是变化版的3n+1问题,给定初始的A,然后再给一个limit数,当
运算过程中的中间数超过了limit或者A = 1结束运算,要我们求这个过程的运算次数ans。
#include<cstdio>
int main()
{
long long a, b;
int cnt = 0;
while( true)
{
cnt ++;
scanf( "%lld%lld", &a, &b);
if( a == -1 && b == - 1) break;
long long n = a;
int ans = 1;
while( n > 1)
{
if( n % 2)
n = n * 3 + 1;
else
n /= 2;
if( n > b) break;
ans ++;
}
printf( "Case %d: A = %lld, limit = %lld, number of terms = %d\n", cnt, a, b, ans);
}
return 0;
}