CodeForces 387A George and Sleep

链接:http://codeforces.com/problemset/problem/387/A

George and Sleep

time limit per test:1 second
memory limit per test:256 megabytes
input:standard input
output:standard output

George woke up and saw the current time s on the digital clock. Besides, George knows that he has slept for time t.

Help George! Write a program that will, given time s and t, determine the time p when George went to bed. Note that George could have gone to bed yesterday relatively to the current time (see the second test sample).

Input

The first line contains current time s as a string in the format "hh:mm". The second line contains time t in the format "hh:mm" — the duration of George's sleep. It is guaranteed that the input contains the correct time in the 24-hour format, that is, 00 ≤ hh ≤ 23, 00 ≤ mm ≤ 59.

Output

In the single line print time p — the time George went to bed in the format similar to the format of the time in the input.

Sample test(s)

Input
05:50
05:44
Output
00:06
Input
00:00
01:00
Output
23:00
Input
00:01
00:00
Output
00:01

Note

In the first sample George went to bed at "00:06". Note that you should print the time only in the format "00:06". That's why answers "0:06", "00:6" and others will be considered incorrect.

In the second sample, George went to bed yesterday.

In the third sample, George didn't do to bed at all.


大意——给你当前的时间和持续睡眠的时间,问你上床睡觉的时间是何时?所有时间均采用24小时格式。


思路——直接模拟。用当前时间的小时和分钟直接减去持续睡眠时间的小时和分钟即可。最后分别判断一下小时和分钟的符号并做相应处理即可。


复杂度分析——时间复杂度:O(1),空间复杂度:O(1)


附上AC代码:


#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <iomanip>
#include <ctime>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <set>
#include <map>
//#pragma comment(linker, "/STACK:102400000, 102400000")
using namespace std;
typedef long long ll;
const double pi = acos(-1.0);
const double e = exp(1.0);
const double eps = 1e-8;
short chour, cmin;
short lhour, lmin;

int main()
{
	ios::sync_with_stdio(false);
	while (~scanf("%hd:%hd", &chour, &cmin))
	{
		scanf("%hd:%hd", &lhour, &lmin);
		int hour = chour-lhour;
		int min = cmin-lmin;
		if (min < 0)
		{
			min += 60;
			hour -= 1;
		}
		if (hour < 0)
			hour += 24;
		printf("%02d:%02d\n", hour, min);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值