HB手游网-为您提供一个绿色下载空间!
当前位置: 首页 > 资讯

小爱换个游戏, 问题分析

来源:小编 更新:2024-12-13 09:46:41

用手机看

扫描二维码随时看1.在手机上浏览
2.分享给你的微信好友或朋友圈

根据您提供的参考信息,我们可以分析并解决卡片游戏的期望值问题。

问题分析

在这个卡片游戏中,小W想要计算她获得小礼物的期望值。已知卡片上的数字和游戏规则如下:

- 有n张卡片,每张卡片上正面写着一个小于等于100的正整数ai。

- 可以从中抽出连续的k张卡片。

- 如果这k张卡片上的数字的平均值a满足l

解题思路

1. 前缀和计算:首先,我们需要计算所有卡片数字的前缀和,以便快速计算任意连续k张卡片的和。

2. 枚举所有可能的连续k张卡片:对于每一对连续的k张卡片,计算它们的和,并判断平均值是否在l和r之间。

3. 计算期望值:对于每一对满足条件的连续k张卡片,计算其对应的概率,并将所有概率相加得到期望值。

代码实现

```python

def gcd(a, b):

while b:

a, b = b, a % b

return a

def get_prefix_sum(cards):

prefix_sum = [0] (len(cards) + 1)

for i in range(len(cards)):

prefix_sum[i + 1] = prefix_sum[i] + cards[i]

return prefix_sum

def get_probability(cards, l, r, k):

prefix_sum = get_prefix_sum(cards)

count = 0

for i in range(len(cards) - k + 1):

for j in range(i + 1, len(cards) - k + 2):

sum_k = prefix_sum[j] - prefix_sum[i]

avg = sum_k / k

if l < avg < r:

count += 1

return count / (len(cards) - k + 1) 2

def get_expectation(cards, l, r, k):

probability = get_probability(cards, l, r, k)

if probability == 0 or probability == 1:

return probability

else:

numerator = probability

denominator = 1

g = gcd(int(numerator 100), int(denominator 100))

numerator //= g

denominator //= g

return f


玩家评论

此处添加你的第三方评论代码