• 8.冰雹数


    声明

    可能本文章会有错误,希望各位读者看到后,记得回复留言,提醒我,以免误人子弟。本人菜鸡,还望各位大佬手下留情。

    题目

    冰雹数

    任意给定一个正整数N,
    如果是偶数,执行: N / 2
    如果是奇数,执行: N * 3 + 1

    生成的新的数字再执行同样的动作,循环往复。

    通过观察发现,这个数字会一会儿上升到很高,
    一会儿又降落下来。
    就这样起起落落的,但最终必会落到“1”
    这有点像小冰雹粒子在冰雹云中翻滚增长的样子。

    比如N=9
    9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
    可以看到,N=9的时候,这个“小冰雹”最高冲到了52这个高度。

    输入格式:
    一个正整数N(N<1000000)
    输出格式:
    一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。

    例如,输入:
    10
    程序应该输出:
    52

    再例如,输入:
    100
    程序应该输出:
    9232

    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗 < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
    注意:主类的名字必须是:Main,否则按无效代码处理。

    分析

    这个题逻辑很简单,只不过有点小坑的地方,冲到最高的冰雹数是指从1(其实可以从2开始,因为冰雹数到了1就停止循环了)到N,不然一直算不出来(表示被坑的很惨),cpu消耗时间其实不用太在意,目前我这种初级菜鸟写的代码还有查出过时间的。。。


    代码

    import java.util.Scanner;
    
    public class lq08 {
    	public static int fun(int N) {
    		//当前冰雹数冲到的最高数
    		int f_max = 1;
    		
    		while(N != 1) {
    			if(N%2 == 0) {
    				N = N/2;
    			}else {
    				N = N*3+1;
    			}
    			if(N>f_max)
    				f_max = N;
    		}
    		return f_max;
    	}
    	
    	public static void main(String[] args) {
    		int max = 1;//从1到N的冰雹数冲到最高的数
    		int f_max;//当前冰雹数冲到的最高数
    		Scanner sc = new Scanner(System.in);
    		int N = sc.nextInt();
    		//开始时间
    		long start = System.currentTimeMillis();
    		//循环出从1到N的数
    		for(int i=1;i<=N;i++) {
    			f_max = fun(i);
    			if(f_max > max)
    				max = f_max;
    		}
    		System.out.println(max);
    		//结束时间
    		long end = System.currentTimeMillis();
    		//时间,比赛的时候不建议写这个浪费时间,当然你是大神的话,随意,当然是大神的话也不太可能来看我的文章,哈哈哈
    		System.out.println("时间:" + (end-start));
    	}
    }
    
    
  • 相关阅读:
    Java 学习笔记- classpath classpath*
    Java this关键字 学习笔记
    Java 基础 类加载器和双亲委派机制 学习笔记
    《Java语言实现快速幂取模》
    《2017年内蒙古自治区第十二届大学生程序设计-超级密码》
    《快速排序》
    《01-背包问题-点菜》
    微信小程序相关二、css介绍,菜单制作,表单相关,京东注册页面
    微信小程序相关一、模仿京东静态登录页面
    分别用js和css实现瀑布流
  • 原文地址:https://www.cnblogs.com/drinkoo/p/8763230.html
Copyright © 2020-2023  润新知