[BOJ] 1009

분산 처리

1009번 https://www.acmicpc.net/problem/1009

분류

  • Bronze 3

  • 수학
  • 구현

해법

컴퓨터가 10대이므로
a^b 개의 데이터가 있을 때 마지막 데이터를 처리하는 컴퓨터는
a^b 의 일의 자리 숫자와 같습니다. (0은 10으로 처리해야 함에 주의해야 합니다.)

어떤 수를 계속 거듭제곱 하다 보면
그 수가 어떤 수이든간에 일의 자리의 수가 반복됩니다.

따라서, 일의 자리의 수끼리만 계속 곱해주면 됩니다.

정답 코드

#include <iostream>
using namespace std;

int main(void)
{
    int T;
    cin >> T;
    for (int i = 0; i < T; i++)
    {
        int a, b;
        int res = 1;
        cin >> a >> b;
        for (int j = 0; j < b; j++)
            res = (res * a) % 10;
        if (res == 0)
            cout << 10 << endl;
        else
            cout << res << endl;
    }
    return 0;
}

Updated:

Leave a comment