[Gold III] Title: 선물 전달, Time: 444 ms, Memory: 72100 KB -BaekjoonHub

This commit is contained in:
SSUM
2025-03-04 20:39:22 +09:00
parent 468bef4bc1
commit 3ca3084444
2 changed files with 48 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
# [Gold III] 선물 전달 - 1947
[문제 링크](https://www.acmicpc.net/problem/1947)
### 성능 요약
메모리: 72100 KB, 시간: 444 ms
### 분류
조합론, 다이나믹 프로그래밍, 수학
### 제출 일자
2025년 3월 4일 20:38:39
### 문제 설명
<p>이번 ACM-ICPC 대회에 참가한 모든 사람들은 선물을 하나씩 준비했다.</p>
<p>대회가 끝나고 난 후에 각자 선물을 전달하려고 할 때, 선물을 나누는 경우의 수를 구하는 프로그램을 작성하시오.</p>
<p>모든 사람은 선물을 하나씩 받으며, 자기의 선물을 자기가 받는 경우는 없다.</p>
### 입력
<p>첫째 줄에 ACM-ICPC 대회에 참가한 학생의 수 N(1 ≤ N ≤ 1,000,000)이 주어진다.</p>
### 출력
<p>경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.</p>

View File

@@ -0,0 +1,16 @@
import sys
input = sys.stdin.readline
N = int(input())
D = [0] * (N+5)
D[0] = 0
D[1] = 0
D[2] = 1
D[3] = 2
for i in range(3, N+1):
D[i] = ((i-1) * (D[i-2] + D[i-1]))%1000000000
print(D[N])