拼多多笔试第三题骰子,只过了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))
#拼多多##笔试题目#