/********************************************
此题为刘汝佳算法竞赛入门经典中第一波习题中的一道题目,题目难度不高,只是简单地利用题目中所给的公式进行运算即可
题目要求为
1给定一个正整数A一个极限值lim,
2判断A是否为1 如是进行下一步
3如A为偶数则对A除二否则进行下一步
4若A为奇数则将A*3+1赋给A
所求目标为进行多少步时A从1中或4中跳出
此题难度不高,但应当注意的是细心,本人就因为忽略了代码中测试的一行freopen语句导致了几次UNAC
重点在于按照其要求去做不要随便打乱顺序
#include "stdio.h"
int main()
{
long long a,lim,i;
int count=0;
//freopen("out.txt","w",stdout);
while(~scanf("%lld%lld",&a,&lim)){
if(a<=0&&lim<=0) break;long long gdz=a;
count++;
i=1;
while(1)
{
if(a<=1) {break;}
if(a>lim) {break;}
if (a%2) a=3*a+1;
else a/=2;
if(a>lim) break;
i++;
}
printf("Case %d: A = %lld, limit = %lld, number of terms = %lld\n",count,gdz,lim,i);
}
return 0;
}
本文解析了一道来自刘汝佳《算法竞赛入门经典》的题目,通过给定的步骤判断一个正整数A何时达到1或者超出限定值。文章详细介绍了实现过程及注意事项。
1612

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



