题解 - CF1950C Clock Conversion

Luogu

本题是一个简单的时间转换程序,将给定的二十四小时制时间转换为十二小时制时间。

模拟即可,读取字符串后,提出小时和分钟部分,下标为 $0$ 和 $1$ 的数字组成小时部分,$3$ 和 $4$ 组成分钟部分。

按照题意,根据小时部分和分钟部分,如果小时部分小于 $12$,则时间为 AM,如果小时部分等于 $0$,则小时部分改为 $12$,小时部分大于 $12$,时间为 PM,小时部分减 $12$ 输出即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;
int T;
int main() {
cin >> T;
while (T--) {
string s, ans1 = "", ans2 = "", ans3 = "", ans;
cin >> s;
ans = s.substr(2, 3);
int n;
n = (s[0] - '0') * 10 + (s[1] - '0');
ans1 += s[0], ans1 += s[1], ans1 += ans, ans1 += " AM";
ans2 += "12", ans2 += ans;
if (n % 12 > 9) {
if (n % 12 == 10)ans3 += "10";
else ans3 += "11";
} else {
ans3 += "0";
ans3 += (n % 12 + '0');
}
ans3 += ans;
ans3 += " PM";
cout << ((n < 12) ? ((n == 0) ? ans2 + " AM" : ans1): ((n == 12) ? ans2 + " PM" : ans3))<< endl;
}
}