ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷试炼场 DAY 01

2022-01-30 18:04:37  阅读:161  来源: 互联网

标签:试炼 01 洛谷 Scanner int System 题目 public


洛谷试炼场 DAY 01

前言

在网上看到说,蓝桥杯的比赛形式和洛谷相似。这就尴尬了啊,之前一直在力扣上努力,虽然都是刷题,但是刷题的形式还是有一点不同的。洛谷上的coding环境更类似于算法竞赛。所以吧,洛谷试炼场 DAY 01 开始

01.超级玛丽游戏

题目描述

超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景

原题目链接:洛谷P1000 超级玛丽游戏

(该说不说,看到这个字符画莫名想起B站上有字符画动漫人物的视频hhh)

思路

这道题是洛谷的零号题(欢迎新手~),用字符的组合画出想要的图画,这道题还是非常简单的,需要注意的就是换行。

代码

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		System.out.println("                ********\r\n" + 
				"               ************\r\n" + 
				"               ####....#.\r\n" + 
				"             #..###.....##....\r\n" + 
				"             ###.......######              ###            ###\r\n" + 
				"                ...........               #...#          #...#\r\n" + 
				"               ##*#######                 #.#.#          #.#.#\r\n" + 
				"            ####*******######             #.#.#          #.#.#\r\n" + 
				"           ...#***.****.*###....          #...#          #...#\r\n" + 
				"           ....**********##.....           ###            ###\r\n" + 
				"           ....****    *****....\r\n" + 
				"             ####        ####\r\n" + 
				"           ######        ######\r\n" + 
				"##############################################################\r\n" + 
				"#...#......#.##...#......#.##...#......#.##------------------#\r\n" + 
				"###########################################------------------#\r\n" + 
				"#..#....#....##..#....#....##..#....#....#####################\r\n" + 
				"##########################################    #----------#\r\n" + 
				"#.....#......##.....#......##.....#......#    #----------#\r\n" + 
				"##########################################    #----------#\r\n" + 
				"#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#\r\n" + 
				"##########################################    ############");
		
	}
}

02.A+B Problem

题目描述

输入两个整数,输出它们的和

(这道题可以说是所有OJ系统的一号题目了,非常经典,也非常简单。它的作用更多是让新手菜鸟熟悉代码格式和输入输出格式)

原题目链接:洛谷P1001 A+B Problem

PS.这道题的思路就省略了---

代码

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        System.out.println(a+b);
    }
}

03.苹果采购

题目描述

现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?(输入两个正整数,分别代表每人分到的数量和同学人数)

原题目链接:[洛谷P5703 苹果采购](P5703 【深基2.例5】苹果采购 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn))

(这道题也是挺简单的说,上一道题是算加法,这道题算的就是乘法,同样的这道题的目的是提高新手菜鸟对提交格式的熟悉,思路同样省略了---)

代码

import java.math.BigInteger;
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		BigInteger ans = BigInteger.valueOf(a*b);
		System.out.print(ans);
		
	}
}

注意:这里的答案我采取的是BigInteger类型,目的是防止答案内存溢出。

04.字母转换

题目描述

输入一个小写字母,输出其对应的大写字母。例如输入q时,会输出Q。

原题目链接:洛谷P5704 字母转换

思路

字母转换也是每个OJ系统的经典题目了,非常简单,核心是使用ASCLL码计算进行大小写的转换,在Java中我们可以使用强制数据转换。

代码

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String a = in.next();
		char i = a.charAt(0);
		int b = (int)i - 32;
		char ans = (char)b;
		System.out.print(ans);
		
	}
}

05.数字反转

题目描述

输入一个不小于100且小于1000,同时包括小数点后一位的一个浮点数,例如123.4,要求把这个数字翻转过来,变成4.321并输出。

原题目链接:洛谷P5705 数字翻转

思路

从这道题开始,就有点意思了。题目中除了翻转外,还有一个重要信息,就是输入是不小于100且小于1000同时包括小数点后一位的浮点数,换句话说,输入有四位有效数字。

一开始对这道题,我的想法是将输入的每一位都输入到一个数组中,然后用另外一个数组来存放翻转后的答案,最后输出。虽然说这个思路有点麻烦,但是也算是常规。一般情况下(例如力扣中),是有严格返回类型限定的,以题目为例,可能就是限定一个浮点的返回类型。

但是!!!在洛谷中(或者说在算法竞赛中),比对的是最后的输出结果,,也就是说只要最后的输出结果和答案一样,并不限制输出的格式问题!(这样的话,这道题就有一个很骚的做法了,具体请看下面代码)

代码

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = in.next();
		for (int i = s.length()-1; i >= 0; i--) {
			System.out.print(s.charAt(i));
		}
		in.close();
	}
}

骚点:在本行倒序输出字符串内容,与答案一致,本题AC!!!!

06.再分肥仔水

题目描述

现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。输入一个实数 t 和一个整数 n,使用空格隔开。输出两个数字表示答案,使用换行隔开。

原题目链接:洛谷P5706 再分肥仔水

思路

这道题的思路还是比较清晰的,主要还是考察除法中小数点位问题,我回顾了一下Java中对于小数点位控制的几个方法。(可能后续会写一下发个博客~)

代码

import java.text.DecimalFormat;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		double t = in.nextDouble();
		int n = in.nextInt();
		DecimalFormat dfDecimalFormat = new DecimalFormat("0.000");
		System.out.println(dfDecimalFormat.format(t/n));
		System.out.println(n*2);
	}
}

注意点:这里我采用的是DecmalFormat方法,这种方法当时学Java的时候没有学到过,所以这里也算是查漏补缺一下了。

07.小鱼游泳时间

题目描述

奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。

这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自己从a时b分一直游泳到当天的c时d分,请你帮小鱼计算一下,它这天一共游了多少时间呢?

小鱼游的好辛苦呀,你可不要算错了哦(出题人实属恶趣味,题目描述还能这么出是我没想到的)

输出 2 个整数 e 和 f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f 应该小于60。

原题目链接:洛谷P1425 小鱼游泳时间

思路

这道题的关键是在单位的换算计算,以及可能出现的内存溢出问题,单纯用整数类型是无法AC的,所以我在代码实现中使用了长整数类型。

代码

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int startHour = in.nextInt();
		int startMin = in.nextInt();
		int endHour = in.nextInt();
		int endMin = in.nextInt();
		long startTime = startHour*60 + startMin;
		long endTime = endHour*60 + endMin;
		long ans = endTime-startTime;
		int min = (int) (ans%60);
		int hour = (int) (ans-min)/60;
		System.out.println(hour + " " + min);
		in.close();
	}
}

PS:很蠢的一种写法,不够简洁漂亮,anyway,我AC就好了!

后言

洛谷的提交和力扣的提交有很多的不同。

  1. 洛谷的在线IDE中是完全空白的,所有都要自己写,所以我一般会在本地的eclipse上写一遍运行一下,再提交测评。
  2. 提交的主类名必须是Main,如果是其他的就会编译错误,这里和力扣里面的自带类名是不一样的。
  3. 洛谷中的输出一般都是打印出来于标准答案对比,对格式没有严格的限制。而在力扣中要求的是返回值,而且返回格式有严格要求。这个区别就导致洛谷中的一些题目可以有骚气一点的解法。

标签:试炼,01,洛谷,Scanner,int,System,题目,public
来源: https://www.cnblogs.com/ZeeWay/p/15857258.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有