转跳点:

  为了考浙江的研究生,我来被PAT虐一下,PAT这是PAT最简单的等级——乙。好了,话不多说,看题。

  作为入门级别,第一题还是很友好的。题目一遍下来整个代码的就出来了,比水仙花数还简单。说一下思路:

    首先先看看要我们干什么,哦,n经过几次卡拉兹猜想才能到1,n - > 1, 那应该要个循环。

    那什么是卡拉兹猜想,题目里说了,我就不重复了。从卡拉兹猜想很容易就可以知道 是两个选择条件。

  结合上面所有得出就可以快速的写出代码了。

实现

  

  1. 1 #include <stdio.h>
  2. 2
  3. 3 int main()
  4. 4 {
  5. 5 int num;
  6. 6
  7. 7 while (~scanf("%d", &num))
  8. 8 {
  9. 9 int count = 0;
  10. 10 while (num != 1)
  11. 11 {
  12. 12 if (num % 2)
  13. 13 {
  14. 14 num = (3 * num + 1) / 2;
  15. 15 }
  16. 16 else
  17. 17 {
  18. 18 num /= 2;
  19. 19 }
  20. 20 count++;
  21. 21 }
  22. 22 printf("%d\n", count);
  23. 23 }
  24. 24 return 0;
  25. 25 }

非递归

  这道题还有递归解法

  1. 1 #include <stdio.h>
  2. 2
  3. 3 int callatz(int num);
  4. 4 int count = 0;
  5. 5 int main()
  6. 6 {
  7. 7 int num;
  8. 8
  9. 9 while (~scanf("%d", &num))
  10. 10 {
  11. 11 count = 0;
  12. 12 printf("%d\n", callatz(num));
  13. 13 }
  14. 14 return 0;
  15. 15 }
  16. 16 int callatz(int num)
  17. 17 {
  18. 18 if (1 == num)
  19. 19 {
  20. 20 return count;
  21. 21 }
  22. 22 if (num % 2)
  23. 23 {
  24. 24 callatz((num * 3 + 1) / 2);
  25. 25 }
  26. 26 if (!(num % 2))
  27. 27 {
  28. 28 callatz((num / 2));
  29. 29 }
  30. 30 return ++count;
  31. 31 }

递归实现

前路多艰,诸君共勉。

  

P1001 害死人不偿命的(3n+1)猜想 (Basic Level)的更多相关文章

  1. [PTA] 1001. 害死人不偿命的(3n+1)猜想 (Basic)

    import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Sc ...

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

    1001. 害死人不偿命的(3n+1)猜想 (15) 较简单,直接代码实现: #include <cstdio> int main() { int n; scanf("%d&qu ...

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

    1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...

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

    1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...

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

    /* * Main.c * 1001. 害死人不偿命的(3n+1)猜想 * Created on: 2014年8月27日 * Author: Boomkeeper *********测试通过***** ...

  6. 9-9害死人不偿命的(3n+1)猜想

    1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...

  7. PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想

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

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

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

  9. PAT 1001 害死人不偿命的(3n+1)猜想 (15)(C++&JAVA&Python)

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

随机推荐

  1. iOS 批量上传图片的 3 种方法

    AFNetworking 在去年年底升级到了 3.0.这个版本更新想必有很多好处,然而让我吃惊的是,它并没有 batch request 接口.之前的 1.x 版本.2.x 版本都实现了这个很常见的需 ...

  2. 设计模式课程 设计模式精讲 16-4 代理模式Coding-动态代理

    1 代码演练 1.1 动态代理 2 疑难解答 2.1 动态代理invoke怎么执行的? 2.2 感觉这块理解的不是很好,下边有时间再看看 1 代码演练 1.1 动态代理 重点: 重点关注动态代理类 测 ...

  3. 搜索栏UISearchBar的使用

    本文结构: 1.首先是对UISearchBar的简介文字 2.初始化展现UISearchBar,并解析它的结构 3.属性.方法.代理等的一一介绍 4.日常的使用,包括单独对UISearchBar的配置 ...

  4. python如何画三维图像?

    python三维图像输出的代码如下所示:#画3D函数图像输出from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport ...

  5. 攻防世界web进阶区(1)

    1.题目地址:http://111.198.29.45:43589 页面提示打开robots文件,则: 页面有提示输入fl0g.php,那么 获取flag. 2.题目地址:http://111.198 ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:在元素获取焦点时显示(如:键盘操作的用户)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. JSP数据交互二

    1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用2.JSP9大内置对象:      对象名称 类型 request (请求对象)  javax.servl ...

  8. Java - lastIndexOf() 方法

    此方法含头不含尾,如获取方法名 add 需要 +1

  9. Day10 - A - Rescue the Princess ZOJ - 4097

    Princess Cjb is caught by Heltion again! Her knights Little Sub and Little Potato are going to Helti ...

  10. css 文本溢出省略号

    单行溢出显示省略号: white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 多行溢出显示省略号: text-overflow: ...