본문 바로가기
Algorithm

[ 백준 / 1009 ] 분산처리 ( 자바 )

코동이 2021. 1. 14.

www.acmicpc.net/problem/1009

 

1009번: 분산처리

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

www.acmicpc.net

 

 

a^b에 속아서 제곱의 수에만 신경을 써서는 안된다.

이 문제는 결국 최종 값의 일의 자리가 무엇인지가 궁금한 문제이다.

이런식으로 문제에서 요구사항을 감추는 일이 종종 있다.

문제를 읽고 어떤 방식으로 풀어야 하는지 조금 더 생각해보고 여러가지 방안을 마련해두자!

 

//1009 분산처리
import java.util.*;
public class Main {

	static List<Long> list = new ArrayList<>();

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		for(int i=0;i<N;i++) {
			list.clear();
			int a = sc.nextInt();
			int b = sc.nextInt();
			
			if(a%10==0) {
				System.out.println(10);
				continue;
			}
			cal(a,b);
		}
	}
	
	public static void cal(int a, int b) {
		long nowVal = a;
		while(!list.contains(nowVal%10)) {
			list.add(nowVal%10);
			nowVal = nowVal*a;
		}
		System.out.println(list.get((b%(list.size())+list.size()-1)%list.size()));
	}
}
반응형