0830 commoncode: 두 판 사이의 차이
ph
잔글편집 요약 없음 |
Maintenance script (토론 | 기여) 잔글 사용자 요청에 따라 Disqus 댓글 기능 및 삽입 태그 제거 |
||
| 34번째 줄: | 34번째 줄: | ||
<references/> | <references/> | ||
2026년 10월 27일 (화) 10:39 기준 최신판
$$ \frac{(a+b+c+\cdots+z)!}{a!b!c!\cdots z!} \pmod p \text{ where } p \text{ is a prime}$$
Above value is always integer. Refer the proofs. The key observation is that the product of \(n\) consecutive integers is divisible by \(n!\).[1]
p = int(1e9)+7 #example. this is a prime number
def anmodp(a, n): # a^n mod p
if n==1:
return a%p
tmp = anmodp(a, n/2)
if n%2==1: #odd
return (a*(tmp**2))%p
else:
return (tmp**2)%p
def fac(n): # n! mod p
k = 1
for i in range(2, n+1):
k *= i
k %= p
return k
def invfac(n): # 1/(n!) (mod p)
return anmodp(fac(n), p-2) #euler totient
def comb(x): # input = int array
s = sum(x)
ans = fac(s)
for i in x:
ans *= invfac(i)
return ans % p