白駿17211号:いい日が嫌い


質問する


題ショートカットキー>白駿17211号:いい日が嫌い

に答える


注意すべきは、Pythonの四捨五入は「ROUND HALF EVEN」方式、四捨五入の数を上げたり下げたりする場合は同じで、偶数値で四捨五入する「ROUND HALF EVEN」方式です.したがって,単独で実装し,四捨五入関数を用いた.
ex) 0.5-> 0
ex) 1.5-> 2
def roundUp(num):
    if num - int(num) < 0.5:
        return int(num)
    else:
        return int(num)+1
        
def solution():
    N, emotion = map(int, input().split())
    prob = list(map(float, input().split()))
    prob_g = []
    prob_b = []
    if emotion:
        prob_g.append(prob[2])
        prob_b.append(prob[3])
    else:
        prob_g.append(prob[0])
        prob_b.append(prob[1])

    for i in range(N-1):
        prob_g.append(prob_g[i]*prob[0]+prob_b[i]*prob[2])
        prob_b.append(prob_g[i]*prob[1]+prob_b[i]*prob[3])
    print(roundUp(prob_g[-1]*1000))
    print(roundUp(prob_b[-1]*1000))
solution()

コードの改良


より簡単に初期化できます.
def roundUp(num):
    if num - int(num) < 0.5:
        return int(num)
    else:
        return int(num)+1

def solution():
    N, emotion = map(int, input().split())
    prob = list(map(float, input().split()))
    prob_g = [1-emotion]
    prob_b = [emotion]
    for i in range(N):
        prob_g.append(prob_g[i]*prob[0]+prob_b[i]*prob[2])
        prob_b.append(prob_g[i]*prob[1]+prob_b[i]*prob[3])
    print(roundUp(prob_g[-1]*1000))
    print(roundUp(prob_b[-1]*1000))
solution()