关于时间睡觉间隔问题算法

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小时去加 睡了的时间。

posted @ 2020-11-07 08:33  咸瑜  阅读(58)  评论(0编辑  收藏  举报