# convolution of two pmf, starting at zero
def conv(p1, p2):
n1 = len(p1)
n2 = len(p2)
res = [0] * (n1+n2-1)
for i in range(0, len(res)):
ac = 0
for j1 in range(0,len(p1)):
j2 = i - j1
if j2 >=0 and j2 < len(p2):
ac += p2[j2] * p1[j1]
res[i] = ac
return res
p6 = [5/6.0, 1/6.0]
p8 = [5/8.0, 2/8.0, 1/8.0]
p10 = [5/10.0, 2/10.0, 2/10.0, 1/10.0]
p12 = [5/12.0, 2/12.0, 2/12.0, 2/12.0, 1/12.0]
def compute(k6,k8,k10,k12):
global p6,p8,p10, p12
p = [1]
for _ in range(0, k6):
p = conv(p,p6)
for _ in range(0, k8):
p = conv(p,p8)
for _ in range(0, k10):
p = conv(p,p10)
for _ in range(0, k12):
p = conv(p,p12)
return p
def probgt(p, n):
return sum ( p[n:])
p = compute(5,7,11,13)
prob = probgt(p,30)
print(prob)
IyBjb252b2x1dGlvbiBvZiB0d28gcG1mLCBzdGFydGluZyBhdCB6ZXJvCmRlZiBjb252KHAxLCBwMik6CiAgICBuMSA9IGxlbihwMSkKICAgIG4yID0gbGVuKHAyKQogICAgcmVzID0gWzBdICogKG4xK24yLTEpCiAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocmVzKSk6CiAgICAgICAgYWMgPSAwCiAgICAgICAgZm9yIGoxIGluIHJhbmdlKDAsbGVuKHAxKSk6CiAgICAgICAgICAgIGoyID0gaSAtIGoxCiAgICAgICAgICAgIGlmIGoyID49MCBhbmQgajIgPCBsZW4ocDIpOgogICAgICAgICAgICAgICAgYWMgKz0gcDJbajJdICogcDFbajFdCiAgICAgICAgcmVzW2ldID0gYWMKICAgIHJldHVybiByZXMKCnA2ID0gWzUvNi4wLCAxLzYuMF0KcDggPSBbNS84LjAsIDIvOC4wLCAxLzguMF0KcDEwID0gWzUvMTAuMCwgMi8xMC4wLCAyLzEwLjAsIDEvMTAuMF0KcDEyID0gWzUvMTIuMCwgMi8xMi4wLCAyLzEyLjAsIDIvMTIuMCwgMS8xMi4wXQoKZGVmIGNvbXB1dGUoazYsazgsazEwLGsxMik6CiAgICBnbG9iYWwgcDYscDgscDEwLCBwMTIKICAgIHAgPSBbMV0KICAgIGZvciBfIGluIHJhbmdlKDAsIGs2KToKICAgICAgICBwID0gY29udihwLHA2KQogICAgZm9yIF8gaW4gcmFuZ2UoMCwgazgpOgogICAgICAgIHAgPSBjb252KHAscDgpCiAgICBmb3IgXyBpbiByYW5nZSgwLCBrMTApOgogICAgICAgIHAgPSBjb252KHAscDEwKQogICAgZm9yIF8gaW4gcmFuZ2UoMCwgazEyKToKICAgICAgICBwID0gY29udihwLHAxMikKICAgIHJldHVybiBwICAgIAoKZGVmIHByb2JndChwLCBuKToKICAgIHJldHVybiBzdW0gKCBwW246XSkKCnAgPSBjb21wdXRlKDUsNywxMSwxMykKcHJvYiA9IHByb2JndChwLDMwKQpwcmludChwcm9iKQo=