P1001 害死人不偿命的(3n+1)猜想 (Basic Level)
转跳点:
为了考浙江的研究生,我来被PAT虐一下,PAT这是PAT最简单的等级——乙。好了,话不多说,看题。
作为入门级别,第一题还是很友好的。题目一遍下来整个代码的就出来了,比水仙花数还简单。说一下思路:
首先先看看要我们干什么,哦,n经过几次卡拉兹猜想才能到1,n - > 1, 那应该要个循环。
那什么是卡拉兹猜想,题目里说了,我就不重复了。从卡拉兹猜想很容易就可以知道 是两个选择条件。
结合上面所有得出就可以快速的写出代码了。
实现:
1 #include <stdio.h>
2
3 int main()
4 {
5 int num;
6
7 while (~scanf("%d", &num))
8 {
9 int count = 0;
10 while (num != 1)
11 {
12 if (num % 2)
13 {
14 num = (3 * num + 1) / 2;
15 }
16 else
17 {
18 num /= 2;
19 }
20 count++;
21 }
22 printf("%d\n", count);
23 }
24 return 0;
25 }
非递归
这道题还有递归解法
1 #include <stdio.h>
2
3 int callatz(int num);
4 int count = 0;
5 int main()
6 {
7 int num;
8
9 while (~scanf("%d", &num))
10 {
11 count = 0;
12 printf("%d\n", callatz(num));
13 }
14 return 0;
15 }
16 int callatz(int num)
17 {
18 if (1 == num)
19 {
20 return count;
21 }
22 if (num % 2)
23 {
24 callatz((num * 3 + 1) / 2);
25 }
26 if (!(num % 2))
27 {
28 callatz((num / 2));
29 }
30 return ++count;
31 }
递归实现
前路多艰,诸君共勉。
P1001 害死人不偿命的(3n+1)猜想 (Basic Level)的更多相关文章
- [PTA] 1001. 害死人不偿命的(3n+1)猜想 (Basic)
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Sc ...
- 1001. 害死人不偿命的(3n+1)猜想 (15)
1001. 害死人不偿命的(3n+1)猜想 (15) 较简单,直接代码实现: #include <cstdio> int main() { int n; scanf("%d&qu ...
- PAT乙级 1001. 害死人不偿命的(3n+1)猜想 (15)
1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...
- PAT-乙级-1001. 害死人不偿命的(3n+1)猜想 (15)
1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...
- 1001. 害死人不偿命的(3n+1)猜想
/* * Main.c * 1001. 害死人不偿命的(3n+1)猜想 * Created on: 2014年8月27日 * Author: Boomkeeper *********测试通过***** ...
- 9-9害死人不偿命的(3n+1)猜想
1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...
- PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想
1001 害死人不偿命的(3n+1)猜想 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一 ...
- [C++]PAT乙级1001.害死人不偿命的(3n+1)猜想(15/15)
/* 1001.害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下 ...
- PAT 1001 害死人不偿命的(3n+1)猜想 (15)(C++&JAVA&Python)
1001 害死人不偿命的(3n+1)猜想 (15)(15 分) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反 ...
随机推荐
- jquery 单选框 radio是否选择问题
业务需求是当用户勾选中的时候删除数据,取消勾选的时候数据取消 //单选事件,获取到每行数据ID $('.checkItem').change(function(){ // checkItem是给rad ...
- 服务端OLEVARIANT数据之后传输
将OLEVARIANT数据流化,然后对流进行压缩,还原成OLEVARIANT以后再发送. procedure StreamToVariant(Stream: TStream; var V: OLEVa ...
- python表白代码1.0桃心输出
python爱心表达函数初级版本:def my_heart(a,b=2): print("\n".join(["".join([(a[(x-y) % len(a ...
- ReentrantReadWriteLock之读写锁判断
一. 读写锁是怎么实现的? 继承AQS,然后通过将AQS中的state转化为二进制,分为高16位和低16位来区分.高16位表示读状态,低16位为写状态. 二. 解析表示方式(高低16位) 假设此时st ...
- sentinel控制台
下载sentinel源码包:https://github.com/alibaba/Sentinel/tree/master,根据自己需要下载不同版本的分支,博主下载得是1.6 下载后解压,然后进入se ...
- Day9 - F - Monkey and Banana HDU - 1069
一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉. ...
- window进行缩放时左侧菜单高度随之变化
window.onresize = function(){ $(); }
- L/SQL Developer 和 instantclient客户端安装配置
PL/SQL Developer 和 instantclient客户端安装配置(图文) 一: PL/SQL Developer 安装 下载安装文件安装,我这里的版本号是PLSQL7.1.4.1391, ...
- 扩展的Sobel 算子
Custom Extended Sobel Filters https://arxiv.org/pdf/1910.00138.pdf sobel算子是进行边缘检测的一个重要算子.它通常是一个3x3的 ...
- POJ 3685:Matrix 二分
Matrix Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 5489 Accepted: 1511 Descriptio ...