【洛谷算法题】P1425-小鱼的游泳时间【入门1顺序结构】
题目链接:小鱼的游泳时间 - 洛谷
🌏题目描述
伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。
这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 24 2424 小时制计算),它发现自己从 a aa 时 b bb 分一直游泳到当天的 c cc 时 d dd 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?
小鱼游的好辛苦呀,你可不要算错了哦。
🌏输入格式
一行内输入四个整数,以空格隔开,分别表示题目中的 a , b , c , d a, b, c, da,b,c,d。
🌏输出格式
一行内输出两个整数 e ee 和 f ff,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f ff 应该小于 60 6060。
🌏样例 #1
🌙样例输入 #1
12 50 19 10
🌙样例输出 #1
6 20
🌏提示
对于全部测试数据,0 ≤ a , c ≤ 24 0\le a,c \le 240≤a,c≤24,0 ≤ b , d ≤ 60 0\le b,d \le 600≤b,d≤60,且结束时间一定晚于开始时间。
🌏题解
题解一:
import java.util.Scanner; public class P1425 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(), b = in.nextInt(), c = in.nextInt(), d = in.nextInt(); // 将两个时间点内的时间差转换为分钟数, 然后再得出小时和分钟数 int e = ((c - a) * 60 - b + d) / 60; int f = ((c - a) * 60 - b + d) % 60; System.out.print(e + " " + f); in.close(); } }
题解二:
import java.util.Scanner; public class P1452 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(), b = in.nextInt(), c = in.nextInt(), d = in.nextInt(); // 小时 int x = c - a; // 分钟 int y = d - b; // 如果分钟数为负数, 则小时加1,分钟等于 y 加 60 if(y < 0) { x--; y = y + 60; } System.out.println(x + " " + y); in.close(); } }
🌏总结
这个题思路很简单,一般来说有两种做法:
- 把相差的时间全部转换成分钟数,然后使用除法和取余输出小时和分钟数。
- 小时减去小时,分钟减去分钟。然后直接输出对应的结果。因为结束时间一定晚于开始时间,而且同为 24 小时制,所以小时可以不用考虑出现负数的情况;而如果分钟数出现负数,则可以让小时数减 1,分钟数用 60 加上这个负数就得到了正确的结果。