1-N 문제 질문입니다. (+ 채점오류)
2
3 câu hỏi đã được viết
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll A, B, C, R;
stack<ll> st;
int main() {
cin >> A >> B >> C;
while (B != 1) {
A %= C;
if (B % 2 == 1) {
st.push(A);
}
A = (A * A) % C;
B = B / 2;
}
A %= C;
while (!st.empty()) {
ll i = st.top();
st.pop();
A = (A*i) % C;
}
cout << A;
return 0;
}안녕하세요. 큰돌님. 질문이 있어서 글을 남기게 되었습니다.
테스트 #1인 [10 11 12]에 대해서만 시간 초과 오류가 발생합니다. (로컬에서 시도했을때는 정상 출력되는 것을 확인했습니다.)
하지만, 왜 시간 초과가 발생하는 지 이유를 알지 못하겠습니다.
위 코드 방식대로라면 반복문이 3번에 끝나게 된다고 생각하는데, 무엇이 잘못된 부분인지 알려주시면 감사할 것 같습니다.
감사합니다.
+++) 9/14, 18:49 방금 확인해봤는데, 정답 코드 그대로 제출해도 똑같이 시간초과가 납니다.! (채점서버도 최신으로 업데이트 해봤습니다.!)
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. 이승헌님.
제시하신 입력 10 11 12에서는 B가 다음과 같이 변하므로 반복문이 정상적으로 종료됩니다.
B = 11 → 5 → 2 → 1
따라서 해당 입력만으로는 무한 반복이 발생하지 않습니다. 다만 현재 코드는 while (B != 1) 조건을 사용하고 있어, 만약 B가 0으로 들어오면 다음과 같이 계속 0에 머무르게 됩니다.
B = 0
B / 2 = 0
즉, B가 0이 될 가능성까지 고려한다면 다음처럼 B > 0을 조건으로 사용하는 것이 더 안전합니다.
ll result = 1;
while (B > 0) {
A %= C;
if (B % 2 == 1) {
result = (result * A) % C;
}
A = (A * A) % C;
B /= 2;
}
cout << result;
또한 현재 코드처럼 홀수인 지수에서 사용할 A를 스택에 저장하는 방식도 원리상 동작할 수 있지만, 결과를 별도의 result 변수에 바로 곱하는 방식이 더 직관적이고 오류 가능성이 적습니다.
거듭제곱을 분할 정복으로 계산할 때는 홀수인 경우 A를 한 번 더 곱하고, 매 단계마다 % C를 적용해야 합니다. 이와 관련된 기존 답변은 아래 게시글에서 확인하실 수 있습니다.
현재 입력 10 11 12만으로는 반복문이 3회 실행되므로, 실제 채점에서 시간 초과가 발생한다면 제출한 코드와 질문에 첨부한 코드가 동일한지, 그리고 채점 데이터에서 B = 0이 입력될 수 있는지 확인해 보시는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
코딩살구클럽 가입 확인 부탁드립니다.
0
39
2
직장인 코테 합격 공부방법 문의
0
46
2
코딩살구클럽 가입 방법
0
51
2
6-H 체점 관련 질문
0
42
1
채점서버 연결 관련 질문입니다
0
71
2
삼성 s직군
0
65
1
삼성 코테 없어짐
0
145
1
코딩살구클럽 가입부탁드립니다
0
65
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
56
2
5-S 테스트 케이스 질문
0
58
2
코살 문제풀이 환경
0
72
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
58
1
추천 추가문제들
0
54
2
프로그래머스 코테 환경 관련해서 질문드립니다.
0
70
2
해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.
0
59
2
균형 이진 트리 설명 시 높이 숫자
0
54
2
4-H 질문드립니다.
0
50
2
1-K 질문드립니다.
0
60
2
대기업 인적성 시험 질문
0
60
2
4-C 질문드립니다
0
55
2
[수학숙제 / BOJ 2870] 채점 서버 오작동
0
46
1
코테 준비 질문
0
71
1
살구클럽가입 요청드려요
0
56
2
1-I 문제 질문
0
54
2

