/*
* 解题思路:
* 题目大致很容易理解,易错点在于该题定义的 A 和 limit 不可以是 int 数据类型,一定要long long数据类型,因为3*n+1会上溢出 int 类型
*/
#include <stdio.h>
long long m,n ;
int total;
int sum( long long x )
{
if( x == 1 ) return total++;
else if( x>n ) return total;
else if( x%2==0 ) sum( x/2 );
else if( x%2==1 ) sum( 3*x+1 );
total++;
return total;
}
int main( )
{
int x=1;
while( scanf("%lld%lld",&m,&n) && m!=-1 && n!=-1 )
{
total = 0;
printf("Case %d: A = %lld, limit = %lld, number of terms = %d\n",x++,m,n,sum( m ) );
}
return 0;
}
本文介绍了一个关于3n+1猜想的C语言实现方案,重点在于避免整数上溢的问题,通过使用long long数据类型确保计算过程的准确性。
2413

被折叠的 条评论
为什么被折叠?



