tuple 値を上手に扱う問題!
問題概要
A さん、B さん、C さんの出社時刻と退社時刻がそれぞれ与えられる。時刻は 3 つの整数 で与えられ、それぞれ時刻の時間、分、秒を表す。
3 人それぞれの出勤時間を上述の 3 つの整数で表せ。
制約
考えたこと
出社時刻も退社時刻もともに 0 時 0 分 0 秒時点からの「秒数」で表してしまうのが楽だと思われる。
時刻「 時 分 秒」の、0 時 0 分 0 秒を起点とした経過時間は、次のように求められる。
(秒)
出社時刻と退社時刻をともにこの形式で表して、差をとり、それを再び「時間、分、秒」のフォーマットに直せば良い。なお、 秒をフォーマットに直すには
x / 3600
(時間)- `(x / 60) % 60' (分)
x % 60
(秒)
と求められる。
コード
#include <bits/stdc++.h> using namespace std; int main() { for (int iter = 0; iter < 3; iter++) { int h1, m1, s1, h2, m2, s2; cin >> h1 >> m1 >> s1 >> h2 >> m2 >> s2; int x1 = h1 * 3600 + m1 * 60 + s1; int x2 = h2 * 3600 + m2 * 60 + s2; int x = x2 - x1; cout << x / 3600 << " " << (x / 60) % 60 << " " << x % 60 << endl; } }