본문 바로가기
Develop/Ps

BOJ(1009).cpp 모듈러 연산(나머지 연산)

by J-rain 2023. 3. 28.

문제를 풀다 정수형 버퍼 오버플로우(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

댓글