[AtCoder]ABC094 D-Binomial Coefficients

問題

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になってしまった。

コメント

タイトルとURLをコピーしました