블로그 옮겼습니다
Modular 연산 줄여서 속도 빠르게하기 본문
이건 확실한건아니고 들은 사실인데 모듈러를 많이하면 생각보다 속도 저하가 있다고한다. 그래서 코포에서 고수들도
모듈러 연산을 줄이는 테크닉을 많이 쓴다고 들었는데
ans 를 구할 때 어떤 여러개의 답들을 곱해서 모듈러연산을 한거라면 못쓰고..
더해서 구할땐 쓸 수가 있는데 더하는 것들이 둘다 mod 미만이라는 것이 보장되기 때문에
아무리 더해봤자 2*mod 미만일 것이다. 그렇기 때문에
ans %= mod 를 하는대신
while(ans>mod)ans-=mod;
를 하면 while 문이 한번만 돌기 때문에 모듈러를 하는 대신 - 연산을 한번 하게 된다.
근데 이게 꽤 성능 차이가 난다고 하는데 아직 나는 겪어 본적이없다.. 어떤 사람이 2초 제한인 문제에서
모듈러를 그냥 썼을 땐 TLE 가 났는데 저렇게 while 문으로 했을때 0.8 초가 나왔다고 한다.
'Algorithm > Memo &Tips' 카테고리의 다른 글
조합(Combination, nCr) 빠르게 구하기 (0) | 2017.05.01 |
---|---|
PS에서 신박한 코딩 방법들 메모 (1) | 2017.05.01 |
STL 에서 vector 에 중복 원소 없애기 (1) | 2017.04.30 |
큰 수의 모든 약수 구하기 (0) | 2017.04.29 |
해싱(Hashing)과 트리 해싱(Tree Hashing) (0) | 2017.04.05 |
Comments