コード例 #1
0
ファイル: p121.py プロジェクト: chrisliu529/euler_proj
def fund(n):
    lower, upper = bounds(n)
    p = 0
    for b in range(lower, upper+1):
        r = n - b
        for seq in mtools.comb(range(1,n+1), r):
            a = mtools.mul(seq)
            p += a
    return mtools.fac(n+1)/p
コード例 #2
0
ファイル: p243.py プロジェクト: chrisliu529/euler_proj
def get_n(l):
    l2 = [primes[i]**x for (i, x) in enumerate(l)]
    return mtools.mul(l2)    
コード例 #3
0
ファイル: p243.py プロジェクト: chrisliu529/euler_proj
def search(l, (m, n)):
    states = [l]
    visited = {}
    nm = 0
    dm = em = 1
    while True:
        s = states.pop(0)
        h = hashable(s)
        try:
            if visited[h]:
                continue
        except KeyError:
            visited[h] = True
        ps = [primes[i] for i in range(len(s))]
        pm = mtools.mul(ps)
        pm1 = mtools.mul([p-1 for p in ps])
        d = get_n(s)
        e1, d1 = normalize(d*pm1, (d-1)*pm)
        if e1*n < d1*m:
            return d
        if e1*dm < d1*em:
            em = e1
            dm = d1
            nm = d
        elif d > nm:
            continue
        states += expand_states(s)
        states.sort(cmp = lambda x,y: cmp(get_n(x), get_n(y)))

def normalize(e, d):
コード例 #4
0
ファイル: p110.py プロジェクト: chrisliu529/euler_proj
def f(l):
    l2 = [2*x+1 for x in l]
    return (mtools.mul(l2)+1)/2