
재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.
1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... ,
10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...
총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라.
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다.
예제에 있는 9의 635승을 그대로 풀려면 범위초과 오류 발생
풀이에 필요한것은 일의 자리수 이고, 십의 자리 이상의 값은 계산 하지 않는 방법으로 접근
ex) 을 계산한다고 하였을때
| 승 | 전체 계산 | 일의 자리만 계산 |
|---|---|---|
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 6 | ||
| 7 | ||
| 8 |
표와 같이 전체 계산과 일의 자리만 계산한것의 일의 자리는 똑같다.
따라서 각 계산마다 a % 10을 함으로 일의 자리만 추출
단, 나눗셈 후 나머지를 반환 하는방식이다 보니 0 이 나올 수 있다. 이 경우 if문을 사용하여 0 값은 10으로 바꿔주는 작업이 필요하다.
package bronze;
import java.util.Scanner;
public class p1009 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int i = 0; i < t; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
int result = 1;
int a2 = a % 10;
for(int j = 0; j < b; j++){
result = (result * a2) % 10;
}
if ( result == 0) result = 10;
System.out.println(result);
}
sc.close();
}
}