0


【每天一道算法题】基础模拟之害死人不偿命的(3n+1)猜想

🌱本专栏将会从基础开始,循序渐进,每天刷一道算法题,也请大家多多支持。数据结构虽然难,但只要肯坚持,一定能学好,希望大家都能够从中有所收获。
📫专栏地址: 🍇每日一道算法题专栏 🍉数据结构专栏
📫本专栏的所有代码都将更新在Gitee上,项目地址:项目地址
📫相关数据结构演示软件:链接地址
📫数据结构在线演示地址:https://visualgo.net/zh https://algorithm-visualizer.org/
💬如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。💬
🔥 如果感觉博主的文章还不错的话,还请❤️关注、👍点赞、⭐️收藏三连支持👍一下博主哦

准备好了吗
Let’s go!
在这里插入图片描述

文章目录

题目来源:
PAT程序设计

👀问题描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dbx69cwL-1651922030579)(imgs.assets/image-20220507185607665.png)]

💬相关知识点介绍

这种题型属于模拟题。模拟题是一类“题目怎么说,你就怎么做”的题目,如果实现起来不太麻烦,就可以称之为“简单模拟”。这类题目不涉及算法,完全只是根据题目描述来进行代码的编写,所以考查的是代码能力。

✏️ 思路解析

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

①如果n为1,则退出循环。

②如果n不为1,则判断n是否为偶数,如果是偶数,则令n除以2;否则令n为(3 * n+1)/2。之后令计数器step加1。

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

✨代码实现

importjava.util.Scanner;//PAT001 https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528classSolution{publicint n,step=0;publicvoidcalacStep(){Scanner scanner =newScanner(System.in);
        n = scanner.nextInt();while( n !=1){if(n %2==0){
                n = n/2;}else{
                n =(3*n +1)/2;}
            step++;}System.out.println(step);}}publicclassMain{publicstaticvoidmain(String[] args){Solution s =newSolution();
        s.calacStep();}}

本文转载自: https://blog.csdn.net/Learning_xzj/article/details/124637614
版权归原作者 每天都要努力的小颓废呀 所有, 如有侵权,请联系我们删除。

“【每天一道算法题】基础模拟之害死人不偿命的(3n+1)猜想”的评论:

还没有评论