본문 바로가기

공부합시다

결과 MOD 나누는 거 관련

a = 999999999

b = 999999999 라고 가정하면

 

a % MOD + b % MOD = 1999999998이 되지만

 

(a + b ) % MOD라고 하면 99999998이 되어서 오버플로우가 나지 않는다 (와우)

 

이걸 int 범위 안에 넣게 하기 위해서 마지막에 자른다고 생각하면 잘 이해된다.

 

암튼 덧셈부터 하고 MOD하는게 오버플로우가 나지 않는 이유는 결과값이 10억 미만인게 보장이 됨 (마지막에 MOD 취해버리니깐) 그래서 이 두개를 더하면 20억 미만이 돼서 당연히 int안에 들어간다!

 

> 만약 덧셈이 두 개 이상이라면?

 

((a+b) % MOD + c) % MOD

 

이런 순서대로 더한다

 

> 곱셈이라면??

 

64비트 쓰세용

'공부합시다' 카테고리의 다른 글

pbds  (0) 2021.05.08
LIS 최장 증가 부분 수열  (0) 2020.10.25
비트마스크로 부분집합 관리  (0) 2020.09.21
거듭 제곱 빠른 계산  (0) 2020.09.19
std::bitset  (0) 2020.09.01