[蓝桥杯 2021 省 B] 时间显示
题目描述
小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要 显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
输入格式
输入一行包含一个整数,表示时间。
输出格式
输出时分秒表示的当前时间, 格式形如
H
H
:
M
M
:
S
S
\mathrm{HH}: \mathrm{MM}: \mathrm{SS}
HH:MM:SS, 其中
H
H
\mathrm{HH}
HH 表示时, 值 为
0
0
0 到
23
,
M
M
23, \mathrm{MM}
23,MM 表示分。值为
0
0
0 到
59
59
59。
S
S
\mathrm{SS}
SS 表示秒, 值为
0
0
0 到
59
59
59。时、分、秒不足两位时补前导 0
。
样例 #1
样例输入 #1
46800999
样例输出 #1
13:00:00
样例 #2
样例输入 #2
1618708103123
样例输出 #2
01:08:23
提示
对于所有评测用例, 给定的时间为不超过 1 0 18 10^{18} 1018 的正整数。
蓝桥杯 2021 第一轮省赛 B 组 F 题。
思路
先把数据化为以s为单位
h = n / 60 / 60 % 24;
m = n / 60 % 60;
s = n % 60;
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll n;
ll h, m, s;
int main() {
cin >> n;
n /= 1000;
h = n / 60 / 60 % 24;
m = n / 60 % 60;
s = n % 60;
if (h < 10) {
if (m < 10) {
if (s < 10)
cout << 0 << h << ':' << 0 << m << ':' << 0 << s << endl;
else
cout << 0 << h << ':' << 0 << m << ':' << s << endl;
} else {
if (s < 10)
cout << 0 << h << ':' << m << ':' << 0 << s << endl;
else
cout << 0 << h << ':' << m << ':' << s << endl;
}
} else {
if (m < 10) {
if (s < 10)
cout << h << ':' << 0 << m << ':' << 0 << s << endl;
else
cout << h << ':' << 0 << m << ':' << s << endl;
} else {
if (s < 10)
cout << h << ':' << m << ':' << 0 << s << endl;
else
cout << h << ':' << m << ':' << s << endl;
}
}
return 0;
}