P5727 冰雹猜想
给出一个正整数 n(n\le 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字(7\times10^{11}7×1011)都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 nn 是 20,变化的过程是 [20, 10, 5, 16, 8, 4, 2, 1]。
根据给定的数字,验证这个猜想,并从最后的 1 开始,倒序输出整个变化序列。
输入格式
无
输出格式
无
输入输出样例
输入 20
输出 1 2 4 8 16 5 10 20
起初我是直接用数组解题,毕竟这是一道入门题,下意识没有考虑太多,但是提交后最后一个测试点过不去,在查阅其他大佬的题解后发现是我数组开的不够大。因为它是奇数时需要先乘3再加一,数字可能会变的很大。将数组大小修改后代码如下:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int cnt=0;int ans[]=new int[10000];//开太小最后一个测试点是过不去的ans[0]=n;while (n!=1) {if (n%2!=0) {n=n*3+1;}else{n=n/2;}cnt++;ans[cnt]=n;}for (int i = cnt; i>=0; i--) {System.out.print(ans[i]+" ");}}
}
而后又又大佬表明倒序输出像极了栈的特点(后入先出)。所以这里可以考虑用栈的方法做。并且java是有内置栈的,用起来挺方便。
代码如下:
import java.util.Scanner;
import java.util.Stack;public class Main {static Stack MyStack=new Stack<>();//用栈做public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int cnt=0;//计数用MyStack.push(n);while (n!=1) {cnt++;if (n%2!=0) {n=n*3+1;}else{n=n/2;}MyStack.push(n);}for (int i = 0; i <= cnt; i++) {System.out.print(MyStack.pop()+" ");}}
}
P5727 冰雹猜想相关推荐
- c语言冰雹猜想用while,c/c++开发分享P5727 冰雹猜想
马克当,那这不就爽了吗?! 传送门 题目描述 给出一个正整数 n(nle 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若 ...
- P5727 冰雹猜想(C语言)
#include<stdio.h>int main() {int n;int a[1000]={0};int i=0;scanf("%d",&n);while( ...
- P5727 【深基5.例3】冰雹猜想(python3实现)
[深基5.例3]冰雹猜想 - 洛谷 """P5727 [深基5.例3]冰雹猜想(python3实现) https://www.luogu.com.cn/problem/P ...
- p5727深基5.例3冰雹猜想c语言,深基
欸嘿,典型的求解第k小的数的问题 算法中使用了快速排序 关键之处在于原本快排需要两边都进行排序,但现在我们只关心第k小的数,所以,如果在ll比k大那么就排左半边,比k小就比右半边,从而实现时间复杂度的 ...
- python冰雹猜想_洛谷-P5727 【深基5.例3】冰雹猜想
洛谷-P5727 [深基5.例3]冰雹猜想 给出一个正整数 \(n(n\le 100)\),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环 ...
- 洛谷 P5727 【深基5.例3】冰雹猜想
C语言基础系列文章 C语言 五种方法输出100以内的素数(质数) 源码 C语言分支结构超基础编程习题整理 详细分析附源码 C语言题解 洛谷P1614 爱与愁的心痛 详细分析源码 C语言题解 P5719 ...
- P5727 【深基5.例3】冰雹猜想(思路+代码详解)python实现
题目描述 给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后,最终都会回到 1.经过验证很大的数字(7×)都可以按照这样 ...
- P5727 【深基5.例3】冰雹猜想
题目描述 给出一个正整数 n(n\le 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环后,最终都会回到 1.经过 ...
- Python验证和可视化冰雹猜想、角谷猜想、考拉兹猜想
推荐教材:<中学生可以这样学Python(微课版)>,董付国.应根球,清华大学出版社,ISBN:9787302554639 京东购买链接: =================== 问题描述 ...
最新文章
- 7714天,王小川正式卸任搜狗CEO!用一瞬间定格永恒
- 从平台到中台 | Elaticsearch 在蚂蚁金服的实践经验
- 数据结构-Huffman树
- 苹果新技术或让无线充电更便捷
- 主类main方法里面可以有不带public的子类 但是不能有接口
- MySQL数据库备份与还原
- 微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能
- 三维分子模型软件PyMOL
- 【Netty报错:】XXXDecoder.decode() did not read anything but decoded a message.
- Harmonious Graph (并查集 —父亲为最大值)
- 考研复试计算机网络篇
- eclipse配置python开发环境_Eclipse配置Python的环境
- 配置Tomcat详细教程!
- 844.比较含退格的字符串
- Cartographer ROS编译安装
- aircrack-ng 添加Mac OS X 支持 airodump-ng和aireplay-ng都可以用了
- 群晖内网穿透(实战)
- 被刷屏的塞尔达来了,附源码!
- 关于IndexedDB的操作文档
- 微信企业号通讯录套件安装失败
热门文章
- 发布JNCIP考试标准版本JUNOS实验用虚拟机
- 设计师学python有意义吗-如果你有设计师朋友,请对他好一些...
- HTML编辑器-HTML5极速入门
- 我的世界合成表自定义CraftTweaker1.18教程
- 2.微信支付分类 和 申请方式 和 支付工具
- jfinal restful.java_JFinal RESTful
- 基于纷享销客开放平台,实现纷享CRM与金蝶云星空系统数据同步
- 数据分析工具比较浅析
- WPF系列(二)数据转换
- java半碳前叉结构,山地车避震前叉功能及原理分类详解(图文)