公式

A - 時刻の正規化 / Time Normalization 解説 by MMNMM


初心者の方へ

与えられた \(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)

投稿日時:
最終更新: