알고리즘 문제를 푸는데 많이 나오는 모듈러 연산!
이걸 몰라서 틀리면 억울하니 알아만 두자.
- (𝑎+𝑏) % 𝑀 = ((𝑎 % 𝑀)+(𝑏 % 𝑀)) % 𝑀
- (𝑎−𝑏) % 𝑀 = ((𝑎 % 𝑀)−(𝑏 % 𝑀)+𝑀) % 𝑀
- (𝑎×𝑏) % 𝑀 = ((𝑎 % 𝑀)×(𝑏 % 𝑀)) % 𝑀
덧셈, 뺄셈, 곱셈에는 대체로 잘 적용하나 나눗셈은 그렇지 않다. 페르마 소정리를 이용해야 하는데 아래의 블로그에 잘 정리되어 있다.
모듈러 나눗셈
Modular 사칙연산만큼 친숙한 모듈러지만 연산은 사칙연산만큼 심플하지는 않다. 정의 자체가 나눗셈을 한 후에 나머지를 가리키는 뜻이니 나눗셈 이상의 매력이 있다. 그럼 한번 사칙연산과 모
ohgym.tistory.com
어쨋든 결론만 기억하자면,
- (𝑎/𝑏) % 𝑀 = ((𝑎 % 𝑀)×(𝑏^(𝑀−2) % 𝑀)) % M
M이 소수여야 하고, b는 M의 배수이면 안된다.
'Algorithm' 카테고리의 다른 글
[Algorithm] Distance in set (0) | 2025.01.02 |
---|---|
[Algorithm] CERC 2023 E,B (1) | 2024.11.12 |
Frog Jump [26107] (1) | 2023.10.15 |