[C++] 백준 1009 : 분산처리

#include <iostream>

int main(int argc, char **argv){
    int T, a, b, tmp = 1;
    scanf("%d",&T);
    for(int i=0; i<T; i++){
        scanf("%d %d",&a,&b); // 1의 자리만 알면 된다.
        // 그냥 pow 불가능, 범위 넘는다.
        for(int j=0; j<b; j++){
            tmp = (tmp * a) % 10;
        }
        if(tmp == 0){
            printf("10\n"); // 나머지 0이면 10이다.
        } else {
            printf("%d\n",tmp);
        }
        tmp = 1; // 초기화
    }

    return 0;
}

오늘의 키포인트

  • pow를 사용하면 숫자가 너무 기하급수적으로 커지기 때문에 사용하면 안된다.
  • 우리가 필요한 것은 1의 자리 숫자일 뿐이다. 제곱해도 1의 자리수만 제곱해서 구해주면 된다.
  • 10의 나머지를 구했기 때문에 만약 10으로 나눴을 때의 나머지가 0이면 이게 바로 10번째 컴퓨터에 할당이 되므로, 0이면 10을 출력하도록 해야한다.

좋은 웹페이지 즐겨찾기