Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 6, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/18373

🧭 풀이 시간

120분

👀 체감 난이도

✏️ 문제 설명

  • $2 \le N, K, P \le 500,000,000$이고, $P$는 소수이다.
  • (( ... (N!)! ... )!)! mod P를 구해보자. (!는 총 K개이다.)

🔍 풀이 방법

[사용한 알고리즘]

  • 페르마의 소정리
  • 윌슨의 정리
  • 분할 정복을 이용한 거듭제곱

사전 지식

페르마의 소정리

  • 소수 $p$와 양의 정수 $a$에 대해, $a^{p} \equiv a (\mod p)$이다.

윌슨의 정리

  • 소수 $p$에 대해, $(p-1)! \equiv -1 (\mod p)$이다.

  • 시작하기 전에, $N = 2$이면 $K$값에 관계없이 항상 결과가 2임을 알 수 있으니 밑의 풀이에선 $N > 2$라고 가정한다.

  • 저 무지막지하게 큰 수 (( ... (N!)! ... )!)! 에 팩토리얼을 한 번 덜 수행한 수$X$라고 정의한다.
  • $X$$P$ 이상이 되는 순간부터 $P$로 나눈 나머지는 0이 된다.
    => $1 \times 2 \times \cdots \times X \mod P$를 구해야 하는데, $X$$P$ 이상이면 식의 중간에서 $0$이 등장하기 때문이다.
  • 정확히 어떤 경우에 $X$$P$ 이상이 되는지 알아보자.
  1. $K \ge 4$면, $X$는 항상 $P$보다 크다.
  2. $K = 3$이면, $N \ge 4$일 때 $X > P$이고, $N = 3$이면 $X = 720$이라 시간 안에 직접 계산이 가능하다.
  3. $K = 2$이면, $N \ge 13$일 때 $X > P$이고, $N \le 11$일 때는 $X = 39916800$이라 시간 안에 직접 계산이 가능하다.
  4. $K = 2$이고 $N = 12$이면서, $P > 12!$인 경우만 남았다.
    $12! = 479001600$이라 직접 계산하면 시간 초과이고,
    윌슨의 정리페르마의 소정리를 이용하면
    $X! \equiv (P-1)! \times ((X+1) \times \cdots \times (P-1))^{-1} (\mod P)$
    $\rightarrow X! \equiv (P-1) \times ((X+1) \times \cdots \times (P-1))^{P-2} (\mod P)$이다.
    거듭제곱은 분할 정복을 이용한 거듭제곱으로 빠르게 계산할 수 있다.

⏳ 회고

계속 고민하다가, 이거 못 풀면 잠을 못 잘 것 같아서 풀이를 찾아봤다.
윌슨의 정리는 진짜 살면서 이름조차 처음 들어봤다.
결국 이건 모르면 못 푸는 문제였다. 더 시간 낭비 안하고 찾아봐서 다행인듯

@ShinHeeEul ShinHeeEul merged commit b584777 into main Mar 6, 2025
1 check passed
@oncsr oncsr added fail 😢 해설을 보고 풀었거나, 못 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 labels Mar 6, 2025
@oncsr oncsr added success 👍 해설을 보지 않고 풀었을 때 and removed fail 😢 해설을 보고 풀었거나, 못 풀었을 때 success 👍 해설을 보지 않고 풀었을 때 labels Jul 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants