A問題 Five Antennas
1 2 3 4 5 6 7 8 9 |
list = [] for i in range(5): list.append(int(input())) k = int(input()) if k<list[-1]-list[0]: print(':(') else: print('Yay!') |
C – Five Transportations
方針
・全ての交通機関で全員を1度に運ぶことができる理想的な状態でも最短5分は必要
・ボトルネック(1回で運べる人数が最小)の交通機関で全員を運び終えることができれば、残り4つのは1分ずつで運ぶことができる。
→全員を運び終えるために2回以上の運搬が必要な交通機関は他にもあるが、
ボトルネックの交通機関で全員を運び終えるまでにも他の交通機関でも複数回運搬を続けているため、
ボトルネックの交通機関で全員を運び終える頃には、他の運搬が複数回必要な交通機関は残り1回の運搬回数まで減らすことができている
・n人 ÷ 運搬人数が最小の交通機関(小数点切り上げ) + 4分(残り4つの交通機関の運搬に必要な時間)
解答
コード・コメント
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import math #入力 n=int(input()) #運搬に必要な時間を記録する配列 move_count = [] #交通機関の数だけ繰り返す for i in range(5): #入力(運搬人数) _ = int(input()) #人数nを運搬人数で割る(小数点切り上げ)ことで、運搬に必要な時間(分)を求め、運搬時間を管理する配列に追加 move_count.append(math.ceil(n/_)) #運搬時間が最も多い(ボトルネックとなる)交通機関を記録 max_count = max(move_count) #最多の運搬時間+4分を解答とする ans = max_count+4 #出力 print(ans) |
コード
1 2 3 4 5 6 7 8 9 10 11 |
import math n=int(input()) move_count = [] for i in range(5): _ = int(input()) move_count.append(math.ceil(n/_)) max_count = max(move_count) ans = max_count+4 print(ans) |
その他
他の解説記事一覧
【Python】AtCoder Beginner Contest 解答・解説記事一覧
コメント