728x90
백준 1947 선물 전달
문제
이번 ACM-ICPC 대회에 참가한 모든 사람들은 선물을 하나씩 준비했다.
대회가 끝나고 난 후에 각자 선물을 전달하려고 할 때, 선물을 나누는 경우의 수를 구하는 프로그램을 작성하시오.
모든 사람은 선물을 하나씩 받으며, 자기의 선물을 자기가 받는 경우는 없다.
입력
첫째 줄에 ACM-ICPC 대회에 참가한 학생의 수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
출력
경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.
제출
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
long mod = 1000000000;
long D[] = new long[1000001];
D[1] = 0;
D[2] = 1;
for (int i = 3; i <= N; i++) {
D[i] = (i - 1) * (D[i - 1] + D[i - 2]) % mod;
}
System.out.println(D[N]);
}
}
예제
5
4
3
21
결과
728x90
'JAVA > 백준' 카테고리의 다른 글
[Java] 백준 1463 1로 만들기 - 동적 계획법(2) (0) | 2023.01.09 |
---|---|
[Java] 백준 2747 피보나치 수 - 동적 계획법(1) (0) | 2023.01.08 |
[Java] 백준 1256 사전 - 조합 알아보기(7) (0) | 2023.01.03 |
[Java] 백준 1722 순열의 순서 - 조합 알아보기(6) (0) | 2023.01.02 |
[Java] 백준 13251 조약돌 꺼내기 - 조합 알아보기(5) (1) | 2023.01.01 |
댓글