コード例 #1
0
ファイル: Problem_515.py プロジェクト: Darkduv/Project-Euler
def inv(n, p):
    if n == 1:
        return 1
    a = bezout(n, p)[1]
    while a < 0:
        a += p
    return a
コード例 #2
0
def fx(n, m):
    d1 = gcd(n, m)
    n0 = n
    phin0 = phi2(n)
    c = phi2(m) - phin0
    if c % d1 != 0:
        return 0
    c //= d1
    m //= d1
    n //= d1
    v, u = bezout(n, m)
    k = (u*c) % m
    return n0*k+phin0
コード例 #3
0
def inv(u, p):
    return bezout(u, p)[1]
コード例 #4
0
from Tools import decompose_tout, bezout, numpy_sieve

l7 = numpy_sieve(10**7)

a = 1
mod = 1000000087
ss = 0
d = {}
for n in range(2, 10**7 + 1):
    lp = decompose_tout(n, l7)
    for p, i in lp:
        if p in d:
            a *= bezout(mod, 1 + 2 * d[p])[0]
            d[p] += i
            a *= 1 + 2 * d[p]
        else:
            d[p] = i
            a *= 1 + 2 * d[p]
        a %= mod
    ss += a
    ss %= mod
print(ss)
# sol = 416146418
コード例 #5
0
# %% Problem 506

from Tools import bezout


L = [(123432, 0, 0), (123432, 1, 1), (23432, 12, 2), (3432, 123, 3), (432, 1234, 4), (32123432, 0, 0), (123432, 123, 3),
     (432, 12343, 5), (2123432, 123, 3), (432123432, 0, 0), (123432, 1234, 4), (32123432, 123, 3), (432123432, 12, 2),
     (3432123432, 1, 1), (23432123432, 0, 0)]
L_q0_r = [0, 1, 2, 3, 4, 32, 123, 43, 2123, 432, 1234, 32123, 43212, 34321, 23432]

NN = 1000
N, R = int.__divmod__(NN, 15)
mod = 123454321

u, v = bezout(9, mod)  # 1 = 9*v+u*mod
while v < 0:
    v += mod
inv_9 = v

u2, v = bezout(999999, mod)  # 1 = 9*v+u*mod
while v < 0:
    v += mod
inv_9_6 = v


def v(n):
    q, r = int.__divmod__(n, 15)
    a, b, lb = L[r]
    s = b+123432*inv_9_6*(pow(10**6, q-1, mod)-1)*10**lb + pow(10, 6*q-6+lb, mod)*a
    return s % mod
コード例 #6
0
def inv(a, p):
    return bezout(a, p)[1] % p