ABC137 B - One Clue
備忘録
問題
回答
import sys import os def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") K, X = list(map(int, sys.stdin.readline().split())) MAX = 1000000 MIN = -1000000 ret = [X] for i in range(1, K): if X + i <= MAX: ret.append(X+i) else: ret.append(X - K) if X - i >= MIN: ret.append(X-i) else: ret.append(X + K) print(*sorted(set(ret))) if __name__ == '__main__': main()
考え方
range
を1
からK
までとして、
数直線上のX
から右(加算)の場合と左(減算)の場合をすべて算出し、
X
の最大値・最小値を考慮して回答の配列に追加した。
しかし、問題の制約をちゃんと読んだら、
K
の範囲は1≦K≦100
、X
の範囲は0≦X≦100
なので、
黒で塗られている石の座標は-100 ~ 200
までだった。。。
冗長な回答をしてしまったので、一応改善したコードも回答しておいた。。。
回答(改善後)
import sys import os def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") K, X = list(map(int, sys.stdin.readline().split())) ret = [] for i in range(X-K+1, X+K): ret.append(i) print(*ret) if __name__ == '__main__': main()
問題文はしっかり読もう。。。