Official
A - 時刻の正規化 / Time Normalization Editorial
by
A - 時刻の正規化 / Time Normalization Editorial
by
MMNMM
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
与えられた \(H,M\) の値から、その時刻データが基準から何分後のものかを計算し、それをもとに \(D,h,m\) を求めることができます。 具体的には、基準からの経過分数を \(\mathrm{duration}\coloneqq60H+M\) として、\(D=\left\lfloor\dfrac{\mathrm{duration}}{1440}\right\rfloor,h=\left\lfloor\dfrac{\mathrm{duration}}{60}\right\rfloor\,\%\,24,m=\mathrm{duration}\,\%\,60\) となります(ここで、整数 \(a,b\ (b\ne0)\) に対して \(a\,\%\,b\) で \(a\) を \(b\) で割った余りを表します)。
あとは、この操作を for 文などを用いて \(N\) 個の入力に対して正しく繰り返せばよいです。
実装例は以下のようになります。
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
for (int i = 0; i < N; ++i) {
int H, M;
cin >> H >> M;
long duration = H * 60L + M; // 経過時間を計算して
// D, h, m を求めて出力
cout << duration / 1440 << " " << duration / 60 % 24 << " " << duration % 60 << endl;
}
return 0;
}
N = int(input())
for i in range(N):
H, M = map(int, input().split())
duration = H * 60 + M # 経過時間を計算して
# D, h, m を求めて出力
print(duration // 1440, duration // 60 % 24, duration % 60)
posted:
last update:
