(BOJ13258 복권 + 은행
문제 설명
- 연속하여 확률을 계산하여 최종 기대값을 계산해야 한다.
- 계산 방법만 이해한다면 어렵지 않게 접근하여 해결할 수 있다.
문제 풀이
def calc_next(now: float, win_prob: float, prize: int) -> float:
win_money = now + prize
return win_money * win_prob + now * (1 - win_prob)
if __name__ == "__main__":
N = II()
accounts = list(map(int, input().split()))
J = II()
C = II()
for _ in range(C):
total_accounts = sum(accounts)
accounts = [calc_next(now, now / total_accounts, J) for now in accounts]
print(accounts[0])
calc_next()
함수로 각 기댓값을 구하는 것을 C번 반복하여 해결한다.