AtCoder ABC 137 B – One Clue Python解説

スポンサーリンク

One Clue

数直線上に 2000001 個の石が置かれています。
これらの石の座標は−1000000,−999999,−999998,…,999999,1000000 です。
これらの石のうち、ある連続する K 個の石が黒で塗られており、それ以外の石は白で塗られています。
また、座標 X にある石は黒で塗られていることが分かっています。
黒で塗られている石が置かれている可能性のある座標をすべて、小さい順に出力してください。

AtCoder Beginner Contest 「One Clue」

座標XのX-K+1とX+K-1を出力します。その際、座標Xが両端の座標を超えないか気を付けましょう。

k, x = map(int, input().split())

for i in range(x - k + 1, x + k):
    if -1000000 <= i <= 1000000:
        if i < x + k - 1:
            print(i, end=" ")
        else:
            print(i)

先にX座標が両端の座標を超えていないか確認する方法もあります。

k, x = map(int, input().split())

l = max(-1000000, x - k + 1)
r = min( 1000000, x + k - 1)

for i in range(l, r + 1):
    if i < r:
        print(i, end=" ")
    else:
        print(i)

max関数とmin関数で座標の範囲を超えていないか確認し、そのあとで座標を出力しています。

AtCoderB問題

Posted by cheese