coding_test/BAEKJOON

백준 1009번 C언어 풀이

CodeJin 2021. 11. 11. 23:30

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

 

1009번: 분산처리

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

입력받은 두 수로 만들어지는 최대값이 10^2000000임을 유의하자. int형이던 long long형이던 이 범위까지 나타낼 수 없으므로 모듈러 계산을 통해 접근하면 된다. 모듈러 연산은 다음을 참고하자 (https://codejin.tistory.com/68)

 

곱셈 역시 n개의 수에 대해 모듈러 연산 법칙이 확장 가능하므로 a를 곱하는 것이 아닌 a를 10으로 나눈 나머지를 계속 곱해주자. 또한 결과값이 0인경우는 10번째 컴퓨터인 셈이므로 이 경우의 출력은 조건연산을 통해 따로 해준다.

 

#include <stdio.h>

int main () {
    int t, a, b, result;
    scanf("%d", &t);
    while (t--) {
        scanf("%d %d", &a, &b);
        result = 1;
        for (int i = 0; i < b; i++) {
            result *= a%10;
            result %= 10;
        }
        printf("%d\n", result ? result : 10);
    }
}