【手把手带你刷好题】——23.害死人不偿命的(3n+1)猜想(简单模拟、非力扣)

简介: 害死人不偿命的(3n+1)猜想(简单模拟、非力扣)

【前言】

今天是刷题打卡第23天!

生命不息,刷题不止,冲鸭!!


原题:害死人不偿命的(3n+1)猜想(简单模拟)

题目描述:

卡拉兹猜想:

对任意一个自然数n ,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n = 1 。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,平明想证明这个貌似很荒唐......


此处并非要证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n, 简单的数一下需要多少步才能得到 n = 1?这里就拿n = 1000举例。


用代码解决就非常简单啦,看下面的思路。

思路:

读入题目给出的n, 之后用while循环语句反复判断n 是否为1:

  • 如果 n == 1,则退出循环;
  • 如果 n != 1,则判断n 是否为偶数,如果是偶数,则令n 除以2;否则令n 为(3*n+1)/ 2 。之后令计数器step++;

这样退出循环后,step的值就是需要的答案。

代码执行:

#include<stdio.h>
int main()
{
  int step = 0;
  int n = 1000;
  while (n != 1)
  {
    if (n % 2 == 0)
    {
      n /= 2;
    }
    else
    {
      n = (3 * n + 1) / 2;
    }
    step++;
  }
  printf("%d\n", step);//输出72
  return 0;
}


这就是简单模拟题,没有涉及算法,完全只是根据题目描述来进行代码的编写,所以侧重考查的是代码能力,我们在做这种类型题目的时候一定要认真读题!读题!!题!!!对于模拟题,“题目怎么说,你就怎么做”


结语

今天是刷题打卡第23天!


因为笔者近期正准备蓝桥杯的一些基础算法,有些题目来源并非力扣,在标题处也会有所说明,铁汁们请放心哦,补充进来的题目都是很不错的。


 

相关文章
|
设计模式 缓存 算法
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘
Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复使用的经验,帮助我们提高代码的可重用性、系统的可维护性等,解决软件开发中的复杂问题。
173 0
|
存储 缓存 算法
从小白开始刷算法 记忆化搜索篇 leetcode.509
从小白开始刷算法 记忆化搜索篇 leetcode.509
|
存储 算法
从小白开始刷算法 记忆化搜索篇 leetcode.322
从小白开始刷算法 记忆化搜索篇 leetcode.322
刷爆leetcode第十一期 0023~0025
刷爆leetcode第十一期 0023~0025
93 0
刷爆leetcode第十一期 0023~0025
|
JavaScript 前端开发
不看后悔系列!原来代码还可以这么写!
不看后悔系列!原来代码还可以这么写!
算法刷题第五天(跑路人笔记)<双指针>
算法刷题第五天(跑路人笔记)<双指针>
算法刷题第五天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>
|
存储 缓存 算法
面试高频考题——手撸一个 LRU 算法!
今天给大家讲一道面试中经常容易遇到的一道题:“手写一个 LRU 算法”。
248 0
面试高频考题——手撸一个 LRU 算法!