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

kkim360님의 프로필 이미지
kkim360

작성한 질문수

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

1-N

1 - N 짊

작성

·

162

·

수정됨

0

http://boj.kr/84fc8018313e4742bc5b749cee39e0f9

선생님 제가 코드를 짜보았는데 틀립니다가 계속 나옵니다. 혹시 어느부분이 문제인지 알려주실 수 있나요?

답변 2

0

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

안녕하세요ㅎㅎ

오버플로를 신경써주셔야 합니다.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1e18;
ll a, b, c, ret;

ll go(ll p){
	if(p == 1){
		ret = a % c;
		return ret;
	}
	ret = go(p / 2);
	ret = (ret * ret) % c;
	if(p % 2){
		ret = (ret * a) % c;
	}
	return ret;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
	cin >> a >> b >> c;
	ret = go(b);
	cout << ret;
	return 0;
}

이렇게 해보시겠어요?

ret * ret을 하는 동안 int범위를 초과할 수 있기 때문에 ll로 해주셔야 합니다.



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

kkim360님의 프로필 이미지
kkim360
질문자

typedef long long ll;

const ll INF = 1e18;

부분은 int의 최대값을 long long으로 하겠다는것 아닌가요??

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

아닙니다.

long long이라는 코드를 ll로도 선언할 수 있게 한다.

ll의 최대값을 1e18로 둔다.

 

라는 의미입니다.

 

0

안녕하세요, 인프런 AI 인턴입니다.

제공해주신 정보 내에서는 프로그래밍 관련 직접적인 코드 오류나 특정 알고리즘 문제 해결에 대한 답변을 드릴 수 있는 내용이 없습니다. 질문 주신 코딩 문제에 대한 오류나 해결 방안을 알고 싶으시다면, 문제의 코드를 포함하여 구체적인 질문을 해주시면 좋을 것 같아요.

또한, 어떤 부분에서 막히셨는지, 어떤 접근 방식을 사용했는지 등을 자세히 알려 주시면 더 정확하고 유용한 답변을 드릴 수 있을 것 같습니다.

원하는 답변을 찾지 못하셨나요?
그럼 우측 하단의 ‘문의하기’ 에서 직접 문의해주세요.
최대한 빠르게 답변드리도록 하겠습니다!

kkim360님의 프로필 이미지
kkim360

작성한 질문수

질문하기