14
2020/08/22 23:48:00 2020/08/22 23:48:59
2020/08/22 23:48:59 2020/08/22 23:48:00
2020/08/22 23:22:
<463 bytes omitted>
用户输出
59
59
1537
82527
1032927
21164127
17902896185
-1
-1
-1
-1
-1
-1
315537897599
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#47137 | #112. czq的时间间隔 | Accepted | 100 | 14 ms | 408 K | C++ 11 / 1.9 K | 计试001陈子鹏 | 2021-02-01 22:30:05 |
#include <iostream>
using namespace std;
typedef long long LL;
const LL LINF = 0x3f3f3f3f3f3f3f3f;
const int INF = 0x3f3f3f3f;
int month[13] = { 0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool leap(int year) {
if (year % 4 || (!(year % 100) && year % 400))
return false;
return true;
}
bool goodtime(int year, int mth, int day, int hour, int min, int scd) {
if (year <= 0 || mth <= 0 || mth > 12 || day <= 0 || day > 31 || hour < 0 || hour > 23 || min < 0 ||
min > 59 || scd < 0 || scd > 59)
return false;
if (leap(year))
month[2] = 29;
else
month[2] = 28;
if (month[mth] < day)
return false;
return true;
}
LL Time(int year, int mth, int day, int hour, int min, int scd) {
LL ans = 0;
if (leap(year))
month[2] = 29;
else
month[2] = 28;
while (year > 400) {
year -= 400;
ans += (400 * 365 + 97);
}
while (year > 100) {
year -= 100;
ans += (100 * 365 + 24);
}
while (year > 4) {
year -= 4;
ans += (4 * 365 + 1);
}
ans += (year - 1) * 365;
for (int i = 1; i < mth; i++) {
ans += month[i];
}
ans += (day - 1);
ans *= 24;
ans += hour;
ans *= 60;
ans += min;
ans *= 60;
ans += scd;
return ans;
}
int main() {
int T;
int year, mth, day, hour, min, scd;
LL ans, T1, T2;
scanf("%d", &T);
while (T--) {
scanf("%d/%d/%d %d:%d:%d", &year, &mth, &day, &hour, &min, &scd);
if (!goodtime(year, mth, day, hour, min, scd)) {
printf("-1\n");
scanf("%d/%d/%d %d:%d:%d", &year, &mth, &day, &hour, &min, &scd);
continue;
}
T1 = Time(year, mth, day, hour, min, scd);
scanf("%d/%d/%d %d:%d:%d", &year, &mth, &day, &hour, &min, &scd);
if (!goodtime(year, mth, day, hour, min, scd)) {
printf("-1\n");
continue;
}
T2 = Time(year, mth, day, hour, min, scd);
ans = T1 - T2;
if (ans < 0)
ans = -ans;
printf("%lld\n", ans);
}
return 0;
}
14
2020/08/22 23:48:00 2020/08/22 23:48:59
2020/08/22 23:48:59 2020/08/22 23:48:00
2020/08/22 23:22:
<463 bytes omitted>
用户输出
59
59
1537
82527
1032927
21164127
17902896185
-1
-1
-1
-1
-1
-1
315537897599
系统信息
Exited with return code 0
10000
5348/13/26 20:09:36 5809/10/09 11:17:33
8951/13/09 02:54:35 1245/10/20 19:37:36
7524/01/04 20:
<399906 bytes omitted>
-1
-1
52181193949
167527773820
11151421677
176367406636
34137847390
71087537213
156479412870
<102130 bytes omitted>
用户输出
-1
-1
52181193949
167527773820
11151421677
176367406636
34137847390
71087537213
156479412870
-1
-1
81508312928
163816674890
-1
6
<92102 bytes omitted>
系统信息
Exited with return code 0