关于时间睡觉间隔问题算法
import java.util.*; public class Main { public static void main(String[] args) { /*此题花两个钟表(12小时制和24小时制)然后去算即可解决*/ /*需要注意的是此题最长可以睡24小时!!!*/ /*分清楚!! 1点是1点 12 点过后是13点!!!*/ Scanner ch = new Scanner(System.in); int HH = ch.nextInt(),MM = ch.nextInt(),SS = ch.nextInt(); int hh = ch.nextInt(),mm = ch.nextInt(),ss = ch.nextInt(); int sum1,sum2,endsum = 0; sum1 = (HH*3600) + (MM*60)+SS; sum2 = (hh*3600) + (mm*60)+ss; if(sum1 > sum2) //如果睡的时间比醒的时间大,意思是说他睡了24小时 减去 他没睡的小时(s1-s2) 换成秒再换成时间即可 { endsum = (24*3600) - (sum1 - sum2); /*或者是(24*3600) - (sum1 - sum2)*/ System.out.print(endsum /3600+" "+(endsum % 3600) / 60 +" "+(endsum % 3600) % 60); } else if(sum1 < sum2) { endsum = (sum2 - sum1); System.out.print(endsum /3600+" "+(endsum % 3600) / 60 +" "+(endsum % 3600) % 60); } else if(sum1 == sum2) /*需要注意的是此题最长可以睡24小时!!!*/ { endsum = (24*3600); System.out.print(endsum /3600+" "+(endsum % 3600) / 60 +" "+(endsum % 3600) % 60); } } }
你是个贪睡虫,有一天被老师逮个正着,这个老师很有意思,提出一个问题:“给定入睡时刻和起床时刻,计算一共睡了多长时间”,如果回答正确就可以免于处罚。入睡时刻和起床时刻都采用24小时制表示法(见备注),而且知道睡觉时间最少为1秒,最多为24小时。
详解看注释
输入
【输入格式】
输入第一行描述入睡时刻,第二行描述起床时刻,两个时刻都是采用“HH MM SS”,其中“HH”表示时,范围为0到23,“MM”表示分,范围为0到59,“SS”描述秒,范围为0到59。
输出
【输出格式】
输出一共睡了多长时间。格式同输入一样。
【输入输出样例1】
sleep.in
|
sleep.out
|
20 0 0
4 0 0
|
8 0 0
|
【输入输出样例2】
sleep.in
|
sleep.out
|
12 34 56
14 36 22
|
2 1 26
|
【备注】
24小时制,是一种时间的表示方法。以区别于12小时制。
在24小时制中,下午1点被写成13点,下午2点被写作14点。
尽管,在生活中,我们使用更多的是12小时制。比如我们说,下午5点下班。我们说的,“朝9晚5”是指的是,上午9点和下午5点(普通职员上下班的时间)。但在科学严谨的说明中,在合同等法律文书中,时间要写成24小时制。
样例输入
12 34 56
14 36 22
样例输出
2 1 26
提示
请注意:睡眠时间最少为1秒,最多为24小时
思考: 为什么用24小时减去没睡的时间 而不是 用 12小时去加 睡了的时间。
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/13939771.html