작성
·
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점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
제공해주신 정보 내에서는 프로그래밍 관련 직접적인 코드 오류나 특정 알고리즘 문제 해결에 대한 답변을 드릴 수 있는 내용이 없습니다. 질문 주신 코딩 문제에 대한 오류나 해결 방안을 알고 싶으시다면, 문제의 코드를 포함하여 구체적인 질문을 해주시면 좋을 것 같아요.
또한, 어떤 부분에서 막히셨는지, 어떤 접근 방식을 사용했는지 등을 자세히 알려 주시면 더 정확하고 유용한 답변을 드릴 수 있을 것 같습니다.
원하는 답변을 찾지 못하셨나요?
그럼 우측 하단의 ‘문의하기’ 에서 직접 문의해주세요.
최대한 빠르게 답변드리도록 하겠습니다!
typedef long long ll;
const ll INF = 1e18;
부분은 int의 최대값을 long long으로 하겠다는것 아닌가요??