角谷猜想(冰雹猜想)
Description
又称冰雹猜想,它首先流传于美国,不久传到欧洲,后来由一位叫角谷的日本人带到亚洲,因此称为角谷猜想。角谷猜想是这样的: 任意给定一个自然数n,当n是偶数时,将它除以2; 当n是奇数时,将它变为3n+1,..., 若干步后,总会得到1。我们要解决的问题: 对于给定的n (1<n<=10^9),求出数字序列中第一次出现1的位置。
Sample Input
6
Sample Output
9
HINT
6 3 10 5 16 8 4 2 1
python解法
n = int(input("请输入一个正整数: ")) # 从用户处获取一个正整数输入
count = 1 # 初始化计数器为1
while n != 1: # 当n不等于1时,继续循环
if n % 2: # 如果n是奇数
n = 3 * n + 1 # 执行n = 3n + 1操作
else: # 如果n是偶数
n = n / 2 # 执行n = n / 2操作,使用整数除法
count += 1 # 计数器加1
print(count)
c++解法
#include<bits/stdc++.h> // 引入C++标准库的头文件
using namespace std;
int main() {
int n, count = 1; // 定义整数n和计数器count,初始化count为1
cin >> n; // 从标准输入读取整数n
while (n != 1) { // 当n不等于1时,执行循环
if (n % 2) { // 如果n是奇数
n = 3 * n + 1; // 根据Collatz猜想,执行n = 3n + 1操作
} else { // 如果n是偶数
n /= 2; // 根据Collatz猜想,执行n = n / 2操作
}
count++; // 计数器加1,记录操作次数
}
cout << count << endl; // 输出操作次数
return 0; // 程序正常结束,返回0
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=181
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=181
文章版权归作者所有,未经允许请勿转载。
THE END