백준 알고리즘

<백준 알고리즘> 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