PAT乙级1001 害死人不偿命的(3n+1)猜想 (15分)

简介: PAT乙级1001 害死人不偿命的(3n+1)猜想 (15分)

题目描述:

卡拉兹(Callatz)猜想:


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


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


输入格式:

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


输出格式:

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


输入样例:

3

输出样例:

5

解题思路:

题目上对于n是奇数时说的有点不清楚,原文题意应该是,当n是偶数时n=n的一半,当n是奇数时n=(3n+1)的一半

解题代码:


#include<iostream>
using namespace std;
int main()
{
  int num=0;
  int n=0;
  int m=0;
  cin>>n;
  while(n!=1){
    if(n%2==0){
      n/=2;
      num++;
    }else if(n%2==1){       
      n=(3*n+1)/2;
      num++;
    }
  } 
  cout<<num<<endl;
  return 0;
}
相关文章
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
1118 7
性能工具之emqtt-bench BenchMark 测试示例
|
XML 数据可视化 安全
一文了解Activiti7
一文了解Activiti7
649 0
|
编解码 API 开发工具
FFmpeg入门及编译 1
FFmpeg入门及编译
441 1
|
8月前
aliyun-upload-sdk访问空值Bug
这段内容描述了一个代码问题:方法调用时未正确处理参数。第一个图显示方法需要传入参数,但未进行空值判断;第二个图显示调用时未传参,导致报错并使上传失败。这是典型的参数处理不当引发的运行时错误,需完善判空逻辑和参数传递以解决问题。
248 1
aliyun-upload-sdk访问空值Bug
|
存储 C++ 容器
C++入门8——vector的使用
C++入门8——vector的使用
1234 0
|
敏捷开发 数据可视化 测试技术
【Docker项目实战】使用Docker部署nullboard任务管理工具
【5月更文挑战第14天】使用Docker部署nullboard任务管理工具
690 4
|
算法 Python
Python技术分享:使用穷举法解决鸡兔同笼问题
Python技术分享:使用穷举法解决鸡兔同笼问题
759 1
【LaTeX】7实现章节跳转
【LaTeX】7实现章节跳转
1002 0
|
NoSQL 算法 Go
Go语言中的分布式事务处理方案
【5月更文挑战第6天】本文探讨了Go语言在分布式事务处理中的应用,包括2PC、3PC和TCC协议。通过示例展示了如何使用Go的`goroutine`和`channel`实现2PC。同时,文章指出了网络延迟、单点故障、死锁和幂等性等常见问题,并提供了相应的解决策略。此外,还以Redis Redlock为例,展示了如何实现分布式锁。理解并实施这些方案对于构建高可用的分布式系统至关重要。
363 0