강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

tmdflgkr님의 프로필 이미지
tmdflgkr

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-N

*와 %의 순서가 이해되지 않습니다

작성

·

386

0

안녕하세요 선생님 1629(1-N) 해설 코드에서 아래 부분이 이해가 잘 되지 않아 질문드립니다.

ll ret = go(a, b / 2);
ret = (ret * ret) % c;

수업에서 오버플로를 방지하기 위해 (a * b) % c = (a % c) *(b % c)의 개념을 사용한다고 했는데 그럼 아래와 같이 되어야 하는거 아닌가요..?

ret = (ret % c) * (ret % c);

저는 ret과 ret을 곱하면 오버플로가 발생할 수 있기 때문에 각각에 모듈러연산을 해준 다음에 곱해야한다고 생각했는데 어떤점이 잘못됐는지 알려주시면 감사하겠습니다.

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 tmd님 ㅎㅎ

ret은 이미 모듈러 연산이 적용되어있는 값(go함수를 봐주세요.) 이기 때문에 다시 모듈러 연산을 할 필요가 없습니다.

 

감사합니다.

tmdflgkr님의 프로필 이미지
tmdflgkr

작성한 질문수

질문하기