1001 害死人不偿命的(3n+1)猜想 (15 分) (MyFirstCSDNBlog~)
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~)相关推荐
- 1001 害死人不偿命的(3n+1)猜想 (15分)
1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...
- C++学习之路 | PTA乙级—— 1001 害死人不偿命的(3n+1)猜想 (15分)(精简)
1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...
- 【PAT乙】1001 害死人不偿命的(3n+1)猜想 (15分) 模拟,水水更健康
1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...
- 1001 害死人不偿命的(3n+1)猜想 (15分)_Quentin
题目链接:1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样 ...
- 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版
PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...
- PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 (15 分) (python3)
PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 (15 分) (python3) 第一次写点博客记录自己学习算法的过程,因为个人能力有限,会不定期发布一些PAT上题目的代码 PAT 乙级的1 ...
- 【PAT乙级】1001 害死人不偿命的(3n+1)猜想 (15 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528 精简写法: #include<cstd ...
- [Java] 1001. 害死人不偿命的(3n+1)猜想 (15)-PAT乙级
1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...
- PAT乙级—1001. 害死人不偿命的(3n+1)猜想 (15)-native
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- PAT 乙级 1001. 害死人不偿命的(3n+1)猜想 (15) Java版
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
最新文章
- 在IntelliJ IDEA中创建Web项目
- spring data redis使用示例
- python中循环结构分有,python常见循环结构有哪些
- 精彩十年(2)——阴沟里也翻船
- 调整 Docker 中 nginx 的日志级别
- 献给那些离婚或准备离婚的人
- 什么是mybatis,mybatis有什么特点
- 网页截图和svg模版动态生成图片Java实现
- 三个箭头循环标志_城市标志系统的概念和类别
- 11.Linux 高性能服务器编程 --- 定时器
- JWPlayer快速入门指南(中文)
- 从第一范式(2nf)到第二范式(3nf)_关系数据模型-范式
- android定位欺骗,1020. Android GPS定位欺骗(模拟定位)的3类途径4种方式
- android水印的添加,Android添加水印的正确方法 只要三步!
- 转帖:三种快乐物质——多巴胺、血清素、内啡肽
- excel计数连续负数(正数)
- 【JS】moment.min.js
- 社区外卖跑腿小程序怎么做?(拼团拼车模块+APP开发费用)
- org.apache.solr.client.solrj.impl.CloudSolrServer$RouteException: Exception writing document id xxxx
- linux 星际争霸,让星际争霸在Linux操作系统下转起来
热门文章
- 校长办公室管理系统c语言,【锦城故事】学软硬结合理论做智慧超群系统是锦城电子的必经之路...
- 微信如何做好服务器,如何用免费服务器做微信JS开发
- Linux学习(1):在服务器上与团队共享文件,workgroup这个用户组相关操作命令
- Python一行流:列举所有k-mer组合(最简单写法)
- 某去哪网,JS逆向:★★★★
- 搞机吧 | 利用magisk安装Xposed框架
- 【深度学习模型】了解一下Faster RCNN
- 卸载奇安信天擎,流氓软件
- 强制卸载 奇安信天擎
- 感觉丧的时候,读一读曾国藩