【算法笔记】PAT B1001

2023-10-27

题目
卡拉兹(Callatz)猜想:

对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?

输入格式:
每个测试输入包含 1 个测试用例,即给出正整数 n 的值。

输出格式
输出从 n 计算到 1 需要的步数。

我的答案

#include <stdio.h>
int main(){
	int n,step = 0;
	scanf("%d", &n);
	while(1){
		if(n == 1) break;
		if(n % 2 == 0)
			n = n / 2;
		else
			n = (3*n + 1)/2;
		step++;
	}
	printf("%d", step);
}

标准答案

#include <stdio.h>
int main(){
    int n,step = 0;
    scanf("%d", &n);
    while(n != 1){
        if(n % 2 == 0)
            n = n / 2;
        else
            n = (3*n + 1)/2;
        step++;
    }
    printf("%d", step);
}

启示

我的答案里,陷入了死循环与利用break语句跳出循环的思维定式,其实大可不必这样。
跳出循环的条件可以直接写在循环控制内

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【算法笔记】PAT B1001 的相关文章

  • CMAKE 中 add_definitions的用法.

    1 官方的说明 Adds D define flags to the compilation of source files add definitions DFOO DBAR Adds definitions to the compile
  • 树莓派安装MJPG-streamer

    文章目录 一 简介 1 MJPG streamer方案的实现 2 JPEG MJPG格式简介 二 测试USB摄像头 1 开启摄像头服务 2 显示USB设备 3 查看设备文件 三 安装 1 更新源 2 安装必要的库 3 下载安装文件 4 编译

随机推荐

  • IPsec中IKE与ISAKMP过程分析(主模式-消息1)

    IPsec协议族中IKE Internet Key Exchange 是一种基于ISAKMP的协议 它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制 简单来说 IKE就是ISAKMP的扩展 为ISAKMP提供了更加高效 灵活和安全
  • ERP系统31.83版本发布,解决企业供应链管理难题

    近日 ERP系统31 83版本正式发布 无处不在的互联网 正在改变企业与用户的连接方式 一旦享受过什么叫实时 就再也无法忍受延迟 一旦感受过什么叫便捷 就再也无法忍受繁琐 企业如何全方位提高服务效率和用户体验 此次升级的智邦国际ERP系统3
  • [git] 小乌龟工具TortoiseGit记住账号密码 ——简单版操作指南

    如何让小乌龟 记住用户名和密码的操作指南 问题描述 步骤1 步骤2 问题描述 在小乌龟的使用过程中 每次push或者pull都要重复输入账号密码 非常麻烦 如果能记住账号密码就好了 这样就省去了时间 那么 怎么设置记住密码 步骤1 打开自己
  • JS中的类相关操作

    1 类相关操作 注意是 通过style属性来修改元素的样式 每修改一个样式 浏览器就需要重新渲染一次页面 这样的执行的性能是比较差的 而且这种形式当我们修改多个样式时 也不太方便 解决方案是 通过修改的class类名的方式 来达到效果 可以
  • 从零开始搭建游戏服务器第二天

    1 搭建开发环境 因为游戏服务器大多部署在linux系统下 所以这里选择的是Centos 7作为开发环境的镜像 预期以后的编译和调试也会在这个镜像上面进行开发 用镜像的方式开发有一个好处是可以随时打包带走 避免到一台新的机器上又要重新搭建开
  • 大数据--关联规则挖掘案例

    环境 虚拟机hive 本地spark python pyspark 数据 商品订单数据 商品种类数据 步骤 将数据上传到hdfs后 在python中完成hive表的创建 数据处理 关联规则挖掘 数据可视化 实现功能 对商品订单中的信息进行挖
  • 初 等 矩 阵

    定义 对单位阵进行一次初等变换后得到的矩阵称为初等矩阵 三种初等矩阵 初等矩阵的性质 初等矩阵的转置仍为同类型的初等矩阵 初等矩阵的行列式 初等矩阵都是非奇异的 矩阵行变换相当于左乘初等矩阵 矩阵列变换相当于右乘初等矩阵 以下命题是等价的
  • Spring的基础知识点,面试常问

    1 Spring是什么 Spring是一个轻量级的IoC和AOP容器框架 是为Java应用程序提供基础性服务的一套框架 目的是用于简化企业应用程序的开发 它使得开发者只需要关心业务需求 常见的配置方式有三种 基于XML的配置 基于注解的配置
  • 基于深度学习的CSI反馈(CsiNet)

    目录 前言 文章主旨 文章背景 现有CSI反馈方法 1 基于码本的CSI反馈方法 2 基于压缩感知的CSI反馈 研究动机 创新点 将CSI视为 图像 CsiNet特性 系统模型和CSI反馈 模型实现 encoder到decoder的层数按顺
  • 修改 input 中 placeholder的 颜色和 字体大小

    在微信小程序中使用 修改 input 中 placeholder 的字体大小 直接在里面添加 style 第一种 只能修改微信小程序
  • python paramiko_Python--Paramiko

    一 基本使用 paramiko是SSH协议的python实现 用于连接远程服务器进行命令交互和文件传输 import paramiko cmd ls task info ps aux 创建客户端对象 ssh paramiko SSHClie
  • python爬虫selenium---Boss直聘

    爬虫初衷是为了练习python爬虫和数据的收集及分析能力 内容均为网站用户可访问到的内容 不涉及隐私 爬了两份数据 一个是设计师岗位 一个是python岗位 爬虫过程 1 爬虫内容始终为正在加载 由于Boss直聘是动态网页 所以需要先观察网
  • 数据库SQL查询(二)之连接查询

    本文介绍SQL查询 如何在海量数据中筛选想要数据 数据库管理系统选择 关系型数据库mysql 数据库管理工具选择 navicat 本文中查询语句和查询案例参考自 https edu csdn net course detail 27673
  • 风靡朋友圈的妙鸭相机,到底用了哪些底层技术?

    不知道大家近期的朋友圈有没有被和海马体 天真蓝如出一辙的AI写真刷屏 这些面若桃花 精致到头发丝 光影充满氛围感的写真都是一款叫 妙鸭相机 的小程序生成的 只要9 9 就能体验999写真 虽然只要9 9 但生成的照片真的很逼真 在大家被Ch
  • element table组件实现shift选中区间行之后,选中行的文字也被选中怎么办

    我的解决办法简单粗暴 直接在vue项目文件中的app vue文件内 监听shift的键盘按下抬起事件 改变当前整个项目的userSelect样式即可 代码如下 mounted addEventListener keydown this ke
  • 5G双域专网解决方案浅析

    摘 要 为了满足教育 文旅等行业客户同时访问内网及互联网的需求 需要制定5G双域专网解决方案 首先对双域专网的业务场景进行阐述 并归纳了三类共性需求 然后围绕业务开展的四个要素进行分析 明确了相应的关键技术 并整合形成两大类双域专网解决方案
  • Iot开发

    OTA升级 protobuf 物联网协议 Infiuxdb TCP协议 传输层通信协议 socket 对协议实现了一层抽象与封装 通用是用IP地址 端口号 描述通信双方 server服务的提供方 client服务的使用方 http协议 应用
  • Git 6. 版本切换(重点)

    使用命令 git reset hard 版本号 查看一下当前的版本日志 如图 工作区中的hello py文件内容如下 版本2 Git版本切换版底层移动的其实是指针 首先我们来开一下保存指正的文件 在工作区的的 git文件夹下打开HEAD文件
  • linux里面查看llvm的版本,linux llvm安装

    1 1 Numba的约5分钟指南 Numba是Python的即时编译器 它最适用于使用NumPy数组和函数以及循环的代码 使用Numba的最常用方法是通过其装饰器集合 可以应用于您的函数来指示Numba编译它们 当调用Numba修饰函数时
  • 【算法笔记】PAT B1001

    题目 卡拉兹 Callatz 猜想 对任何一个正整数 n 如果它是偶数 那么把它砍掉一半 如果它是奇数 那么把 3n 1 砍掉一半 这样一直反复砍下去 最后一定在某一步得到 n 1 卡拉兹在 1950 年的世界数学家大会上公布了这个猜想 传