2015136077   4년 전

주석처리한 로직 1과 2에 대하여

1. 홀수인경우 return값을 ((tmp*tmp)%c*a)%c라 정의하였는데 

(tmp*tmp*a)%c가 올바른 답안이라 생각하는데 %c연산을 또 하는것은 잘못된 방법이지 않나요

2. 초기의 pow값에 pow(a,b,c)가 아닌 pow(a%c,b,c)를 넣어야 하는 이유가 무엇인가요.

djm03178   4년 전

1. c로 나눈 나머지를 구할 때 곱하기나 더하기 과정에서 몇 번이고 어떤 수든 c로 나눈 나머지를 취해도 상관 없습니다. 모듈로의 성질입니다. (temp*temp*a)%c로 하게 될 경우 temp*temp*a 를 하는 순간 long long의 범위를 초과하여 오버플로우가 발생할 수 있기 때문에 문제가 됩니다.

2. 코드를 짜기에 달렸는데, b가 1일 때 a를 그대로 리턴하게 만들었기 때문에 그렇게 해야 하는 것이고, 대신에 b가 0일 때 1을 리턴하게 만들었으면 그대로 a를 넣어도 상관 없습니다.

yoonfy4280   4년 전

2147483646 2147483647 2147483647

정답 

2147483646

2015136077   4년 전

오버플로우 문제였네요! 감사합니다

댓글을 작성하려면 로그인해야 합니다.