Day 005 — 入出力・四則演算(テーマ最終問題)

2026-04-12 灰色 / Phase 1 ★☆☆☆☆ 入出力・四則演算

問題

太郎くんは自転車で D km 離れた目的地へ向かいます。自転車の速さは V km/h です。
出発から到着までにかかる時間を 〇時間〇分 の形式で出力してください。端数は切り捨てです(例: 2.7時間 → 2時間42分)。

入力形式

D V

制約

$1 \le D \le 1000$
$1 \le V \le 100$
$D, V$ は整数

入出力例

入力例 1

100 3

出力例 1

33 20

入力例 2

60 4

出力例 2

15 0

入力例 3

7 2

出力例 3

3 30

ヒント (段階的開示)

ヒント1: 方向性
「時間」を直接計算しようとすると小数が出て扱いが難しい。まず「分」に変換しよう。
ヒント2: アプローチ
D÷V 時間 = D×60÷V 分。総分数を整数で求めれば、あとは //% で解ける。
ヒント3: 誘導
D, V = map(int, input().split())
total_minutes = D * 60 // V
hours = total_minutes // 60
minutes = total_minutes % 60
print(hours, minutes)

模範解答 (Python)

D, V = map(int, input().split())
total_minutes = D * 60 // V
hours = total_minutes // 60
minutes = total_minutes % 60
print(hours, minutes)

Step-by-Step 解説

1入力を受け取る
D, V = map(int, input().split()) でアンパック代入。
2総分数を整数のまま計算
D * 60 // V を使う。int(D / V * 60) はfloat誤差リスクがある(例: 209.99... → 209 になるバグ)。整数演算で誤差を避けるのが定石。
3時間と分に分解
hours = total_minutes // 60(切り捨て除算)、minutes = total_minutes % 60(剰余)。
4出力
print(hours, minutes) はスペース区切りで出力。

よくあるミス

ミス原因正しい書き方
int(D / V * 60)float誤差D * 60 // V
先に割ってから掛ける同上先に掛けてから割る
print(str(hours)+str(minutes))スペースなしprint(hours, minutes)
int(input()) でスペース区切り入力使えないmap(int, input().split())

次のステップ

  • 発展: D, V が小数の場合に対応する(math.floor
  • 次回予告: テーマ2「条件分岐(if/elif/else)」

自己評価

自分の回答

気づき・メモ