코드 순열
시간 제한2초메모리 제한128 MB
순열의 위수(순환 길이들의 최소공배수)가 정확히 K인 1부터 N까지의 순열 개수를 2^31-1로 나눈 나머지를 구한다.
문제
금고를 열려면 부터 까지의 자연수를 정해진 비밀 순서대로 입력해야 합니다. 이 순서는 의 한 순열이며, 이 순열의 위수(order)가 정확히 임을 당신은 확실히 알고 있습니다.
순열의 위수란 그 순열을 번 적용했을 때 모든 원소가 처음 위치로 돌아오게 하는 가장 작은 양의 정수 을 말합니다. 이는 순열을 이루는 각 순환(cycle) 길이들의 최소공배수와 같습니다. 예를 들어 코드 의 위수는 인데, , , 이기 때문입니다.
위수를 알면 시도해야 할 코드의 개수를 크게 줄일 수 있으며, 당신은 그 개수를 정확히 알고 싶습니다. 소수 보다 큰 수는 인정하지 않기로 했으므로, 그 개수를 로 나눈 나머지로 답하세요. (예를 들어 개수가 이면 이 됩니다.)
과 가 주어질 때, 의 순열 중 위수가 정확히 인 것의 개수를 로 나눈 나머지를 구하세요.
입력
두 정수 과 가 한 줄에 주어집니다 (, ).
출력
개의 원소로 이루어진 순열 중 위수가 정확히 인 것의 개수를 로 나눈 나머지를 정수 하나로 출력하세요.