안녕하세요 오늘은 나머지 연산에 대해 말씀드리겠습니다. 백준 알고리즘을 참고했습니다.
나머지연산
1. 나머지로 출력하라는 문제가 등장할 때
2. (A+B) % M = ((A%M) + (B%M)) % M
3. (A * B) mod M = ((A mod M) * (B mod M)) mod M
4. 나누기의 경우에는 성립하지 않음(Modular Inverse를 구해야 함)
5. 뺄셈의 경우에는 먼저 mod연산을 한 결과가 음수가 나올 수 있기 때문에 6번과 같이 해야함
6. (A - B) Mod M = ((A mod M) - (B mod M) + M) mod M
ex) (5+2) % 3 = 7 % 3 = 1 , (5 % 3 + 2 % 3) % 3 = 1, (2 + 2) % 3 = 4 % 3 = 1
그러면
(6 % 3 - 5 % 3 ) % 3 = ( 0 - 2 ) % 3 = -2 % 3 = ?
답이 무엇일까요??? -2 일까요 1 일까요 ??
답 : 프로그램마다 다릅니다. 자바 ,C는 -2가 나오지만 파이썬은 1이 나옵니다.
그러면 똑같이 나오게 할려면?
-> (a - b) % c -> (a % c - b % c + c) % c를 해주면 됩니다. 그러면 똑같은 답이 나옵니다.
소수
소수 : 약수가 1과 자신 밖에 없는 수
1.N이 소수가 되려면, 2보다 크거나 같고, 루트N 보다 작거나 같은 자연수로 나누어 떨어지면 안 된다.
이유는? N이 소수가 아니라면, N = a X b로 나타낼 수 있다(a <= b)
2. a > b라면 두 수를 바꿔서 항상 a <= b로 만들 수 있다.
3. 두 수 a와 b의 차이가 가장 작은 경우는 루트 N이다.
5. 즉, 루트 N까지만 검사를 해본다.
관련 문제 : 소수찾기, 에라토스테네스의 체, 골드바흐의 추측, 팩토리얼 0의 개수
이상 포스터를 맞치겠습니다.
'알고리즘' 카테고리의 다른 글
백준 알고리즘2869번 - 달팽이는 올라가고 싶다 C++ 문제풀이 (0) | 2020.04.16 |
---|---|
백준알고리즘 2292 - 벌집 C++ 문제 풀이 (0) | 2020.04.16 |
백준알고리즘 1712 - 손익분기점 c++ 문제풀이 (0) | 2020.04.15 |
백준 - 10870 c++ 풀이 및 설명 (0) | 2020.04.11 |
C ++로 하는 야구게임 (0) | 2020.03.15 |