백준 알고리즘
<백준 알고리즘> 1947번: 선물 전달
우현짱짱
2021. 1. 9. 23:03
문제
이번 ACM-ICPC 대회에 참가한 모든 사람들은 선물을 하나씩 준비했다.
대회가 끝나고 난 후에 각자 선물을 전달하려고 할 때, 선물을 나누는 경우의 수를 구하는 프로그램을 작성하시오.
모든 사람은 선물은 하나씩 받으며, 자기의 선물을 자기가 받는 경우는 없다.
입력
첫째 줄에 ACM-ICPC 대회에 참가한 학생의 수 N(1≤N≤1,000,000)이 주어진다.
출력
경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.
예제 입력 1
5 |
예제 출력 1
44 |
더보기
Solution
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int N;
long int *count=NULL;
scanf("%d", &N);
count=(long int *)malloc((N+1)*sizeof(long int));
count[0]=1;
count[1]=0;
for(int i=2;i<=N;i++)
count[i]=((i-1)*(count[i-1]+count[i-2]))%1000000000;
printf("%ld\n", count[N]);
free(count);
return 0;
}
728x90