728x90
반응형
https://www.acmicpc.net/problem/11401
문제
자연수 과 정수 가 주어졌을 때 이항 계수 를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 과 가 주어진다. (1 ≤ ≤ 4,000,000, 0 ≤ ≤ )
출력
를 1,000,000,007로 나눈 나머지를 출력한다.
풀이
Code
import sys
input = sys.stdin.readline
# 1. 제곱 함수 정의
def pow(x, p) :
# 1-1. 종료 조건 설정
if p == 1 : return x
# 1-2. p // 2 값 구하기
value = pow(x, p // 2) % mod
# 1-3. 제곱값 리턴
if p % 2 == 0 : return value * value
else : return value * value * x
n, k = map(int, input().split())
mod = 1_000_000_007
# 2. dp 생성
dp =[0 for _ in range(n+1)]
# 3. 초기값 설정
dp[0], dp[1] = 1, 1
# 4.
for i in range(2, n+1) : dp[i] = i * dp[i-1] % mod
# 5.결과 출력
print(dp[n] * pow(dp[n-k] * dp[k], mod - 2) % mod)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 13023. ABCDE (1) | 2024.01.22 |
---|---|
[Python/BOJ] 12763. 지각하면 안 돼 (1) | 2024.01.19 |
[Python/BOJ] 1504. 특별한 최단 경로 (2) | 2024.01.09 |
[Python/BOJ] 2023. 신기한 소수 (0) | 2024.01.08 |
[Python/BOJ] 1360. 되돌리기 (1) | 2024.01.08 |