문제
문제이해
10개의 컴퓨터가 존재하며 각 컴퓨터는 1 ~ 10번까지의 번호가 부여되고 데이터의 1의자리 숫자와 일치하는 컴퓨터에서 일을 수행하게 된다
ex)1번 데이터 -> 1번 컴퓨터, 12번 데이터 -> 2번 컴퓨터
데이터는 a^b 의 형태로 주어지며 마지막에 데이터를 처리하는 컴퓨터의 번호를 구하는 문제
입력
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)
- T
- a b (a 와 b는 공백으로 구분되어 입력)
출력
각 테스트 케이스에 대해 마지막 데이터가 처리되는 컴퓨터의 번호를 출력한다
풀이
거듭제곱 문제이며 주의할 점은 단순히 a를 b번 곱하게 되면 int와 long의 범위를 초과하게 되어 주의하여야 한다
따라서 제곱을 했을때 1의 자리에 있는 수만이 1의 자리수에 변화를 줄 수 있기 때문에 거듭제곱을 하는 과정에서 매번 1의 자리 수만을 남기며 계산하였습니다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int test_case = sc.nextInt();
for(int i = 0; i < test_case; i++){
int a = sc.nextInt();
int b = sc.nextInt();
int answer = 1;
// 1의 자리 숫자는 1의 자리 숫자로만 정해지기 때문에 제곱하며 10으로 나눴을 때 나머지만 가져옴
for(int j = 0 ; j < b; j++){
answer = answer * a % 10;
}
if(answer == 0)answer = 10;
System.out.println(answer);
}
}
}
'Algorithm > 문제' 카테고리의 다른 글
[알고리즘] 백준 5585 : 거스름돈 - JAVA (0) | 2023.04.06 |
---|---|
[알고리즘] 백준 1931 : 회의실 배정 - JAVA (0) | 2023.04.06 |
[알고리즘] 백준 1010 : 다리놓기 - JAVA (0) | 2023.04.04 |
[알고리즘] 백준 13458 : 시험 감독 - JAVA (0) | 2023.04.03 |
[알고리즘] 백준 14501 : 퇴사 - JAVA (0) | 2023.04.03 |