题目链接:P6206 [USACO06OCT] Another Cow Number Game G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
奶牛们在玩一种数字游戏,Bessie 想让你帮她预测一下结果。游戏开始时,Bessie 将得到一个正整数 N。此时她的分数为 0。
奶牛们按照以下规则对 N 进行变换:
- 如果 N 是奇数,那么将它乘以 3 后再加 1。
- 如果 N 是偶数,那么将它除以 2。
数字每变换一次,Bessie 就得到 1 分。当 N=1 时,游戏结束。此时的分数就是她的最终得分。
输入格式
一行,一个整数 N。
输出格式
一行,一个整数,为 Bessie 的最终得分。
样例 #1
样例输入 #1
5
样例输出 #1
5
提示
【数据范围】
对于 100% 的数据,1 <= N <= 10^6。
------------
【样例说明】
当 N 的初始值为 5 时,游戏的过程如下:
Bessie 的最终得分为 5。
AC code:(注意:为防止在运算过程中炸int,应当使用long long。否则,将导致最后一个测试点TLE。对于最后一个测试点,当输入n == 113383时,在运算过程中会炸int,会将n变为负数,从而导致死循环)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll; // 注意:为防止在运算过程中炸int,要使用long long
int main()
{
ll n;
cin>>n;
ll res = 0;
while(n != 1)
{
if(n % 2 != 0)
{
n = n * 3 + 1;
res ++;
}
else
{
n /= 2;
res ++;
}
}
cout<<res;
return 0;
}