拼多多笔试第三题骰子,只过了85,哪里有问题。。
import sys
if __name__ == '__main__':
n = int(sys.stdin.readline().strip())
nums = list(map(float, sys.stdin.readline().strip().split()))
nums = sorted(nums)
result = 0.0
fenmu = 1.0
fenzi1 = 1.0
fenzi2 = 1.0
max_v = int(nums[-1])
for cur in range(1, max_v+1, 1):
if cur == 1:
for i in nums:
fenmu = fenmu * i
pro = cur/fenmu
r = pro * cur
result += r
continue
fenmu = 1.0
fenzi1 = 1.0
fenzi2 = 1.0
for i in nums:
if cur <= i:
fenmu = fenmu * i
fenzi1 = fenzi1 * cur
fenzi2 = fenzi2 * (cur-1)
pro = (fenzi1 - fenzi2) / fenmu
r = pro * cur
result += r
# 后面的只是为了取2位浮点数
result = str(result)
idx = result.index('.')
a = result[0:idx]
b = result[idx+1:]
if len(b) ==2:
b = b
elif len(b) > 3:
if int(b[2]) >= 5:
b = b[0] + str(int(b[1])+1)
else:
b = b[0:2]
elif len(b) == 1:
b = b + '0'
print(float(a+'.'+b)) #拼多多##笔试题目#
查看11道真题和解析