Exemplo n.º 1
0
 def comb(self, k):
     assert self.n < Mint.MOD
     if k < 0 or k > self.n:
         return Mint(0)
     if k == 0 or k == self.n:
         return Mint(1)
     return self.fact[self.n] * self.ifact[k] * self.ifact[self.n - k]
Exemplo n.º 2
0
 def __init__(self, n):
     self.n = n
     self.fact = [Mint(1)] * (n + 1)
     self.ifact = [Mint(1)] * (n + 1)
     for i in range(1, n + 1):
         self.fact[i] = self.fact[i - 1] * Mint(i)
     self.ifact[n] = self.fact[n].inv()
     for i in range(n, 0, -1):
         self.ifact[i - 1] = self.ifact[i] * Mint(i)
Exemplo n.º 3
0
def create(args):
  dir=args[0]

  if len(args)>1:
    proof=args[1]
  else:
    proof=None

  m=Mint(dir)
  m.create(proof)
Exemplo n.º 4
0
 def comb(self, n, k):
     assert n < Mint.MOD
     if k < 0 or k > n:
         return Mint(0)
     if k == 0 or k == n:
         return Mint(1)
     numerator = Mint(n-k+1)
     for i in range(n-k+2, n+1):
         numerator *= Mint(i)
     d = Mint(1)
     for i in range(2, k+1):
         d *= Mint(i)
     denominator = d.inv()
     return numerator*denominator
Exemplo n.º 5
0
def create(args):
    username = args[0]
    token = args[1]
    project = args[2]
    branch = args[3]

    m = Mint("GitBank")

    agh = github.GitHub(username, token)
    user = agh.users.show(username)
    parts = project.split("/")
    commits = agh.commits.forBranch(parts[0], parts[1], branch)
    collabs = agh.repos.collaborators(parts[0], parts[1])

    if username in collabs:
        print("You can't mint from your own repo.")
    else:
        print("Searching for commits")
        for commit in commits:
            if commit.committer.login == username:
                print("http://github.com" + commit.url)
                m.create(commit.url)
Exemplo n.º 6
0
 def test_mul_2(self):
     a = Mint(self.TEN)
     b = Mint(self.TEN)
     ans = a * b
     exp = 10**20 % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 7
0
 def test_pow(self):
     a = Mint(2)
     n = 10
     ans = a**n
     self.assertEqual(2**10, ans.x)
Exemplo n.º 8
0
 def test_sub_2(self):
     a = Mint(self.TEN * 2)
     b = Mint(self.TEN)
     ans = a - b
     exp = self.TEN % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 9
0
 def test_mul(self):
     a = Mint(4)
     b = Mint(2)
     ans = a * b
     self.assertEqual(8, ans.x)
Exemplo n.º 10
0
 def test_div_2(self):
     a = Mint(self.TEN * 2)
     b = Mint(self.TEN)
     ans = a // b
     self.assertEqual(2, ans.x)
Exemplo n.º 11
0
 def test_sub(self):
     a = Mint(4)
     b = Mint(2)
     ans = a - b
     self.assertEqual(2, ans.x)
Exemplo n.º 12
0
 def test_idiv_2(self):
     ans = Mint(self.TEN)
     ans //= Mint(2)
     self.assertEqual((self.TEN // 2) % self.MOD, ans.x)
Exemplo n.º 13
0
 def test_idiv(self):
     ans = Mint(10)
     ans //= Mint(2)
     self.assertEqual(5, ans.x)
Exemplo n.º 14
0
 def test_isub_2(self):
     ans = Mint(self.TEN * 2)
     ans -= Mint(self.TEN)
     exp = self.TEN % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 15
0
 def test_imul(self):
     ans = Mint(10)
     ans *= Mint(2)
     self.assertEqual(20, ans.x)
Exemplo n.º 16
0
 def test_isub(self):
     ans = Mint(10)
     ans -= Mint(2)
     self.assertEqual(8, ans.x)
Exemplo n.º 17
0
 def test_iadd_2(self):
     ans = Mint(self.TEN)
     ans += Mint(self.TEN)
     exp = (self.TEN % self.MOD + self.TEN % self.MOD) % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 18
0
 def test_iadd(self):
     ans = Mint(4)
     ans += Mint(4)
     self.assertEqual(8, ans.x)
Exemplo n.º 19
0
 def test_init(self):
     ans = Mint(self.TEN)
     self.assertEqual(self.TEN % self.MOD, ans.x)
Exemplo n.º 20
0
 def test_add(self):
     a = Mint(2)
     b = Mint(2)
     ans = a + b
     self.assertEqual(4, ans.x)
     self.assertEqual(2, a.x)
Exemplo n.º 21
0
 def test_pow_2(self):
     a = Mint(self.TEN)
     n = 2
     ans = a**n
     exp = 10**20 % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 22
0
 def test_add_2(self):
     a = Mint(self.TEN)
     b = Mint(self.TEN)
     ans = a + b
     exp = (self.TEN % self.MOD + self.TEN % self.MOD) % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 23
0
 def test_imul_2(self):
     ans = Mint(self.TEN)
     ans *= Mint(self.TEN)
     exp = (10**20) % self.MOD
     self.assertEqual(exp, ans.x)
Exemplo n.º 24
0
 def test_div(self):
     a = Mint(4)
     b = Mint(2)
     ans = a // b
     self.assertEqual(2, ans.x)