문제를 풀다 정수형 버퍼 오버플로우(Buffer Overflow)가 발생하여 해결방법을 찾는도중
모듈러 연산(나머지 연산)이 눈에 들어왔다.
모듈러 연산은 간단하게 a mod b = ? a를 b로 나눈 나머지를 구하는 것이다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int T;
cin >> T;
for (int i = 0; i < T; i++)
{
int a, b;
int c=1;
cin >> a >> b;
for (int i = 1; i <= b; i++)
{
c *=a;
}
string r = to_string(c);
cout << r[r.length()-1] << endl;
}
}
처음 알고리즘을 a,b 입력받고 정수형을 문자열로 바꾼다음 문자열의 마지막 인덱스를 가져와 출력하려했지만
곱셈하는 과정에서 정수형이 오버플로우 나기때문에 모듈러 연산을 통해 이를 막아야하는 문제였다.
꿀팁 10924712095 %10 => 5 일의자리숫자 사용할때
10924712095 /10 => 1 위와반대
'Develop > Ps' 카테고리의 다른 글
[C++] STL sort함수 사용법 (0) | 2023.07.18 |
---|---|
[C++] STL 스택(stack) 사용법 (0) | 2023.04.13 |
[CS/C++] STL 덱(Deque) 사용법 (0) | 2023.04.12 |
[CS/C++] STL 큐(Queue) 사용법 (0) | 2023.04.11 |
BOJ(2609).cpp 유클리드 호제법 (0) | 2023.04.05 |
댓글