written by: 东篱下の悠然


首先看到这个题目描述,很简单~ 不用找规律 全模拟一下很快出结果。而且主题目除了前两句信息有用 后面都是“水话”不用看~ ps注意是要求输出 砍了多少次 噢,每次循环要计数器变量(我在这里定义了count)自增一次。代码如下~
#include <iostream>                //标准输入输出流头文件,cin 和 cout 要在这里面调用using namespace std;          //声明一个命名空间
int main(){int n, count = 0;           //定义两个变量,一个存储输入的数据,一个做计数器cin >> n;                  //从键盘读入一个数字并存入变量nwhile( n != 1){               //当n没有被砍到1时,继续循环,继续砍if( n % 2 == 0)         //如果n能被2整除,就是偶数:n /= 2;                  //是偶数就对半砍,并把结果刷新给变量n它自己else                      //不是偶数就是奇数了呗n = ( 3*n + 1) / 2;       //是奇数就乘3加1,并且还要对半砍。这里可以不加小括号count ++;                  //对n加工一次了,计数器自增一次}cout << count;               //输出结果,就是计数return 0;
}
ok, 上AC的图:

还有第二种解法~ 有一个灵活性极强的语句:goto语句,可以取代while循环,可以任意 随意 无条件地灵活转移语句,改变程序流向。但有缺点:它的灵活性实在太强啦,一不留神就陷入死循环,不太容易掌控。代码如下:
#include <iostream>using namespace std;
int main(){int n, count = 0;cin >> n;A:{                     //设置标志,冒号结束if( n == 1) {       //进入循环首先判断n是不是=1。如果成立,就输出结果 并结束循环cout << count;return 0;}if( n % 2 == 0) n /= 2;   //上同else n = ( 3*n + 1) / 2;count ++;}goto A;
}
AC图如下:

还有第三种解法…仔细读题,看到两个“砍掉一半”的字眼吗??是的,不论它是奇数还是偶数都逃不过被“砍掉一半”。把“砍掉一半”的操作提出来码在后面~ 只要 n != 1 满足,进入循环了,“砍掉一半”的操作只写一次就好咯^ _ ^因此这里是第一版的简洁版。代码如下:
#include <iostream>using namespace std;
int main()
{int num,count = 0;cin >> num;while( num != 1 ){if ( num%2 == 1)      //奇数要先3*n+1再砍。偶数跳过这句if,直接砍num = num*3 +1;num /= 2;count ++;}cout << count;return 0;
}
上AC图~~

♥如有谬误还请指正~~蟹蟹♥

1001 害死人不偿命的(3n+1)猜想 (15 分) (MyFirstCSDNBlog~)相关推荐

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

    1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...

  2. C++学习之路 | PTA乙级—— 1001 害死人不偿命的(3n+1)猜想 (15分)(精简)

    1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...

  3. 【PAT乙】1001 害死人不偿命的(3n+1)猜想 (15分) 模拟,水水更健康

    1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...

  4. 1001 害死人不偿命的(3n+1)猜想 (15分)_Quentin

    题目链接:1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样 ...

  5. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

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

    PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 (15 分) (python3) 第一次写点博客记录自己学习算法的过程,因为个人能力有限,会不定期发布一些PAT上题目的代码 PAT 乙级的1 ...

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

    https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528 精简写法: #include<cstd ...

  8. [Java] 1001. 害死人不偿命的(3n+1)猜想 (15)-PAT乙级

    1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...

  9. PAT乙级—1001. 害死人不偿命的(3n+1)猜想 (15)-native

    卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...

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

    卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...

最新文章

  1. 在IntelliJ IDEA中创建Web项目
  2. spring data redis使用示例
  3. python中循环结构分有,python常见循环结构有哪些
  4. 精彩十年(2)——阴沟里也翻船
  5. 调整 Docker 中 nginx 的日志级别
  6. 献给那些离婚或准备离婚的人
  7. 什么是mybatis,mybatis有什么特点
  8. 网页截图和svg模版动态生成图片Java实现
  9. 三个箭头循环标志_城市标志系统的概念和类别
  10. 11.Linux 高性能服务器编程 --- 定时器
  11. JWPlayer快速入门指南(中文)
  12. 从第一范式(2nf)到第二范式(3nf)_关系数据模型-范式
  13. android定位欺骗,1020. Android GPS定位欺骗(模拟定位)的3类途径4种方式
  14. android水印的添加,Android添加水印的正确方法 只要三步!
  15. 转帖:三种快乐物质——多巴胺、血清素、内啡肽
  16. excel计数连续负数(正数)
  17. 【JS】moment.min.js
  18. 社区外卖跑腿小程序怎么做?(拼团拼车模块+APP开发费用)
  19. org.apache.solr.client.solrj.impl.CloudSolrServer$RouteException: Exception writing document id xxxx
  20. linux 星际争霸,让星际争霸在Linux操作系统下转起来

热门文章

  1. 校长办公室管理系统c语言,【锦城故事】学软硬结合理论做智慧超群系统是锦城电子的必经之路...
  2. 微信如何做好服务器,如何用免费服务器做微信JS开发
  3. Linux学习(1):在服务器上与团队共享文件,workgroup这个用户组相关操作命令
  4. Python一行流:列举所有k-mer组合(最简单写法)
  5. 某去哪网,JS逆向:★★★★
  6. 搞机吧 | 利用magisk安装Xposed框架
  7. 【深度学习模型】了解一下Faster RCNN
  8. 卸载奇安信天擎,流氓软件
  9. 强制卸载 奇安信天擎
  10. 感觉丧的时候,读一读曾国藩