洛谷-P6206 [USACO06OCT] Another Cow Number Game G
洛谷-P6206 [USACO06OCT] Another Cow Number Game G
原题链接:
题目描述
奶牛们在玩一种数字游戏,Bessie 想让你帮她预测一下结果。游戏开始时,Bessie 将得到一个正整数 \(N\)。此时她的分数为 \(0\)。
奶牛们按照以下规则对 \(N\) 进行变换:
- 如果 \(N\) 是奇数,那么将它乘以 \(3\) 后再加 \(1\)。
- 如果 \(N\) 是偶数,那么将它除以 \(2\)。
数字每变换一次,Bessie 就得到 \(1\) 分。当 \(N=1\) 时,游戏结束。此时的分数就是她的最终得分。
输入格式
一行,一个整数 \(N\)。
输出格式
一行,一个整数,为 Bessie 的最终得分。
输入输出样例
输入 #1
5
输出 #1
5
说明/提示
【数据范围】
对于 \(100\%\) 的数据,\(1\le N\le 10^6\)。
【样例说明】
当 \(N\) 的初始值为 \(5\) 时,游戏的过程如下:
\(N\) | 变换后的数字 | 变换过程 | 总分 |
---|---|---|---|
\(5\) | \(16\) | \(3\times 5+1\) | \(1\) |
\(16\) | \(8\) | \(16\div 2\) | \(2\) |
\(8\) | \(4\) | \(8\div 2\) | \(3\) |
\(4\) | \(2\) | \(4\div 2\) | \(4\) |
\(2\) | \(1\) | \(2\div 2\) | \(5\) |
Bessie 的最终得分为 \(5\)。
C++代码
#include <iostream>
using namespace std;
int main() {
long long n, i;
cin >> n;
for (i=0; n != 1; ++i)
if (n % 2)
n = n * 3 + 1;
else
n /= 2;
cout << i << endl;
return 0;
}