考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC078-B - ISU を解く

ABC078-B - ISU

 

・席全体の幅がX

・人の幅がY

・席の端と人との間はZだけ空ける、人と人との間もZだけ空ける

 

以上の条件で最大何人の人が座れるか、という問題

 

まず、1人座るためには、両側にZの間隔が必要(2Z)で

人の幅分の長さ(Y)も必要なので、Y + 2Z の長さが必要になる

 

2人の場合は席の端からの間隔と、2人の間の間隔が必要(3Z)で

2人分の幅(2Y)も必要なので、2Y + 3Z の長さが必要になる

 

3人の場合も同様にして考えると、3Y + 4Z の長さが必要

4人の場合は、4Y + 5Z の長さが必要

5人の場合は、5Y + 6Z の長さが必要

 

上記を一般化すると、N人の場合は、NY + (N+1)Z の長さが必要ということになる

この式について、Nを1から試していって

X を超えたらその直前の N が答えということになる

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
X,Y,Z=map(int,input().split())

N=1
while True:
  if N*Y+(N+1)*Z>X:
    break
  else:
    N+=1

# 出力
print(N-1)

 

提出結果はACでした