Dev/PS

[백준] 1009 분산 처리 java

풋데브 2022. 1. 27. 18:20

import java.io.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {
    static int T;
    static int a;
    static int b;
    static StringBuilder sb;

    public static int calculate() {
        int ans = 1;
        for(int i = 0; i < b; i++) {
            ans = (ans*a) % 10;
        }
        if(ans == 0) {
            return 10;
        }
        return ans;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();
        int T = Integer.parseInt(br.readLine());
        StringTokenizer st;
        for (int i = 0; i < T; i++) {
            st = new StringTokenizer(br.readLine());
            a = Integer.parseInt(st.nextToken());
            b = Integer.parseInt(st.nextToken());
            sb.append(calculate()).append('\n');
        }

        System.out.print(sb.toString());
    }
}

상한이 99의 99999승이기 때문에 그대로 나머지 연산처리를 하게 된다면 오류가 일어나게 된다.

 

그렇기 때문에 (c*a)%10 (a = 1) 한 값에 계속 나머지 연산을 b번만큼 반복해서 구해준다.