AtCorder Beginner Contest 170 に参加しました。
ABCの3問ACでした。
Python3を使用しています。
A問題
入力をリストに入れ、0が何番目か(インデックス)を求めます。
import sys
def input():
return sys.stdin.readline()[:-1]
def main():
A = list(map(int,input().split()))
print(A.index(0) + 1)
if __name__ == "__main__":
main()
B問題
つるかめ算です。
全ての動物が鶴だと仮定し、残った足の本数を鶴と亀の足の数の差(4 - 2 = 2)で割ります。
ただしつるかめ算はすべての場合で成立しないので例外を考えます。
1 足の数が多すぎる/少なすぎる
2 組み合わせとして成り立たない足の数(奇数など)
import sys
def input():
return sys.stdin.readline()[:-1]
def main():
X, Y = map(int,input().split())
a = Y - 2 * X
if a >= 0 and a % 2 == 0 and a / 2 <= X:
print('Yes')
else:
print('No')
if __name__ == "__main__":
main()
C問題
入力値pと整数Xの差を求め、新しいリストp_newを作ります。
0 → ±1 → ±2 とリストの中をwhile文で繰り返しながら探し、見つからなくなったときが求める答えです。
ただし、複数存在する場合は小さい方を答えることから、絶対値numを引いた値を答えます。
import sys
def input():
return sys.stdin.readline()[:-1]
def main():
X, N = map(int,input().split())
p = list(map(int,input().split()))
p_new = [i - X for i in p]
num = 0
while num in p_new and -num in p_new:
num += 1
if X - num in p:
print(X + num)
else:
print(X - num)
if __name__ == "__main__":
main()