[BOJ 14205] 함수
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
5
Time limit:
2.0s
Memory limit:
512M
Problem types
Allowed languages
이 문제에서 함수란 1부터 n까지의 정수와 1부터 n까지의 정수가 매핑되어 있는 함수를 의미한다. 예를 들어, n = 3인 경우에 가능한 함수 g의 한 예는 g(1) = 1, g(2) = 3, g(3) = 1이다.</p>
fj(x)란 다음과 같이 정의되어 있다.
- 올바른 x에 대해서, f0(x) = x
- 올바른 x와 j에 대해서, fj+1(x) = fj(f(x))
다음과 같은 새로운 표현이 정의되어 있다.
- G(f, w)는 1보다 크거나 같고, n보다 작거나 같은 x에 대해서, fr(x)값의 집합을 의미한다. 이때, r은 w보다 크거나 같아야 한다.
- S(f, w)는 G(f, w)의 크기이다.
- Z(f)는 모든 음이아닌 정수 w에 대해서, S(f, w)값의 최솟값이다.
- A(y)는 Z(f) = y인 함수 f의 집합이다.
n과 k가 주어졌을 때, A(k)의 크기를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력 형식
첫째 줄에 n과 k가 주어진다. (1 ≤ n ≤ 5,000)
출력 형식
첫째 줄에 A(k)의 크기를 1,000,000,007로 나눈 나머지를 출력한다.
예제 입력 1
2 1
예제 출력 1
2
예제 입력 2
2 2
예제 출력 2
2
예제 입력 3
1 1
예제 출력 3
1
예제 입력 4
3 1
예제 출력 4
9
예제 입력 5
3 3
예제 출력 5
6
예제 입력 6
5 3
예제 출력 6
900
예제 입력 7
5000 5000
예제 출력 7
541108809
힌트
n = 2이기 때문에 총 4개의 함수를 만들 수 있고, 각각의 함수를 a, b, c, d라고 하면 다음과 같다.</p>
- a(1) = 1, a(2) = 1
- b(1) = 1, b(2) = 2
- c(1) = 2, c(2) = 1
- d(1) = 2, d(2) = 2
a와 d는 A(1)에 포함되어 있고, b와 c는 A(2)에 포함되어 있다.
Comments