문제를 보면 1번 부터 10번까지의 컴퓨터가 있으며, 이는 데이터의 1의 자릿수와 동일한 값을 의미한다. 1번 데이터 1번 컴퓨터, 2번 데이터 2번 컴퓨터 ... 11번 데이터 1번 컴퓨터.
위의 규칙대로 식을 새워 보면, a^b %10 = 컴퓨터 번호
가 된다.
하지만 이 식을 그대로 적용하게 되면, 메모리 부족
으로 인해 fail이 발생한다.
이를 해결하기 위해 1의 자리의 값만 구하면 된다는 생각을 해보면 쉽게 구할 수 있다. 즉, 전체 값을 계산할 필요 없이 1의 자리 값만 계산한다.
7^3 = 7 * 7 * 7 이고, 이는 343이라는 값이 출력된다. 이를 중간에 %10을 하여, 출력한 뒤
값을 마저 곱해주어도 1의 자리는 여전히 3이다.
49 % 10 = 9 → 9 * 7 = 63 → 63 % 10 = 3 과 같은 이치이다.
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0; i < T; i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int result = 1;
for(int j=0; j < b; j++){
result = result * a % 10;
}
if(result == 0) result = 10;
sb.append(result).append('\n');
}
System.out.println(sb);
br.close();
}
}