考えて競プロする

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

ABC099-B - Stone Monument を解く

ABC099-B - Stone Monument

 

1本目の柱と2本目の柱の高低差は2m、2本目と3本目の柱の高低差は3m、

3本目と4本目の高低差は4m … というように

高低差は1mずつ大きくなっていっているので

2本の柱の高低差を知ることでそれらの柱が何番目の柱か計算することができる

 

数学的に計算して解くことも可能だが

柱は999本しかないため、端から計算していこうと思う

 

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

 

提出したコード

# 入力
a,b=map(int,input().split())

# 柱の高さ(1本目)
x1=1

# 高低差(0本目との差は1なので1から)
y=1

for i in range(998):
  # 高低差を+1
  y+=1

  # 2本目の高さを求める
  x2=x1+y

  # 2本の高低差が一致した場合
  if x2-x1==b-a:
    # 足りない長さが積雪量(x2-bでも可)
    print(x1-a)
    break

  # 次の比較のために1本目の柱の高さを更新
  x1=x2

 

提出結果はACでした

 

数学的な解説も知りたい方は解説PDFの方をどうぞご覧ください

 

AtCoder Beginner Contest 099 解説