けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 258 A - When? (8Q, 灰色, 100 点)

最後の出力が少しややこしいかもしれない。

問題概要

21:00 の  X 分後の時刻を "22:14" のような形式で出力せよ。

制約

  •  0 \le X \le 100

解法

まずは時刻を求めよう。

  •  X \lt 60 のときは、 21 X
  •  X \ge 60 のときは、 22 (X - 60)

と求められる。

さて、出力するときには「何分」のところが 1 桁のときは 0 埋めする必要があってややこしい。C++ では printf() 関数の 0 埋めが使える。整数値 m について、0 埋めして 2 桁表示するのは

printf("%02d", m);

というように書ける。まとめると、 H M 分を表示するのは

printf("%02d:%02d\n", H, M);

と書ける。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int K, H, M;
    cin >> K;
    
    if (K < 60) H = 21, M = K;
    else H = 22, M = K - 60;
    printf("%02d:%02d\n", H, M);
}