🧩 Problem Solving

[메모] %10007

date
Sep 16, 2022
slug
divided-by-10007
author
status
Public
category
🧩 Problem Solving
tags
summary
백준에서 10007로 나누어 출력하라고 하는 이유
type
Post
thumbnail

%10007

백준문제를 풀다보면 종종 10007로 나누어 출력하라는 문제가 나온다. 이는 결과값이 int 혹은 long long이 담을 수 있는 값보다 커지기 때문인데, 이때 맨 나중에 결과값을 % 10007 하면 안된다.
 

왜 않되??

계산중간에 이미 값이 int , long long 값의 범위를 초과해 이상한 값이 되어버릴수 있기때문이다.
 

그럼 어떻해 해?

그래서 (A+B)%M = ( (A%M)+(B%M) ) % M 의 성질을 이용하여, 값을 계산할때마다 10007의 나머지값을 더해주고 마지막에 다시 10007의 나머지값을 계산한다.
  • 덧셈, 뺄셈, 곱셈, 연산에서 사용가능하다. 그러나 뺄셈의 값은 음수값이 나올수 있기때문에 조심해야한다.
 

결론

(A-B)%M = ( (A%M)-(B%M)+M ) % M 로 해결가능하다.