博客
关于我
PAT(Basic Level)1001 (3n+1)猜想
阅读量:558 次
发布时间:2019-03-09

本文共 809 字,大约阅读时间需要 2 分钟。

1001 宝藏大问题(3n+1)猜想(15 分)

卡拉兹(Callatz)猜想:对于任何一个正整数 n,如果它是偶数,那么将它除以2;如果它是奇数,那么将 (3n + 1) 除以2。通过不断重复这个过程,最后肯定会在某一步得到 n=1。

对于给定的任一不超过 1000 的正整数 n,您需要计算从 n 计算到 1 所需的步骤(即砍多少下)

我们的任务是编写一个程序,接受输入 n 的值,计算并输出所需步骤的数量。下面是解决方案的简要说明:

### 方法思路我们可以通过模拟过程来解决这个问题。具体步骤如下:1. 初始化步骤计数器到 0。2. 检查当前数是奇数还是偶数: - 如果是偶数,将其除以 2。 - 如果是奇数,将其转换为 (3n + 1) 并除以 2。3. 每次操作后递增步骤计数器。4. 当结果等于 1 时停止,返回步骤计数器的值。

解决代码

#include 
using namespace std;int getNum() { int a = 0; cin >> a; return a;}int count(int a) { int i = 0; while (a != 1) { if (a % 2) { a = (3 * a + 1) / 2; } else { a = a / 2; } i++; } return i;}int main() { int a, i; a = getNum(); i = count(a); cout << i << endl;}

### 结果示例输入:7输出:11

通过上述方法,我们可以轻松计算出从任意正整数 n 到 1 所需的步骤数。这种方法简单直观,能够快速解决问题。

转载地址:http://slvpz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现获取文件头的50个字符(附完整源码)
查看>>
Objective-C实现随机图生成器算法(附完整源码)
查看>>
OJ中常见的一种presentation error解决方法
查看>>
OK335xS UART device registe hacking
查看>>
ok6410内存初始化
查看>>
one_day_one--mkdir
查看>>
OpenCV 中的图像转换
查看>>
OpenCV-Python接口、cv和cv2的性能比较
查看>>
opencv5-图像混合
查看>>
opencv9-膨胀和腐蚀
查看>>
OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
查看>>
OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
查看>>
OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
查看>>
OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
查看>>
OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
查看>>
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>
Opencv中KNN背景分割器
查看>>
OpenCV中基于已知相机方向的透视变形
查看>>