問題
D - Binomial Coefficients
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
方針
\(n\)が偶数の時、\(_{n}C_{k}\)が最大になるのは\(k=\frac{n}{2}\)で、\(n\)が奇数の時は\(k = \frac{n-1}{2}, \frac{n+1}{2}\)の時になる。この値がリストの中に存在しないかもしれないが、近ければ近いほど良い。
提出コード
#input
n = int(input())
a = list(map(int, input().split()))
m = max(a)
#output
#mが奇数の時(m, k)が最大になるのはk = (m-1)/2, (m+1)/2の時
#mが偶数の時(m, k)が最大になるのはk = m/2の時
#maxを探し、奇偶で分ける。
if m % 2 == 0:
b = [abs(i-m//2) for i in a]
c = min(b)
d = b.index(c)
else:
b1 = [abs(i-(m-1)//2) for i in a]
b2 = [abs(i-(m+1)//2) for i in a]
c = min(min(b1), min(b2))
if min(b1) <= min(b2):
d = b1.index(c)
else:
d = b2.index(c)
if n == 2:
print(max(a), min(a))
else:
print(max(a), a[d])
提出結果
Submission #26853087 - AtCoder Beginner Contest 094
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
その他
初め\(n=2\)の時を考慮せずにコーナーケースとしてWAになってしまった。
コメント