백준 Bronze2 1009 - 분산처리

JH·2022년 9월 25일
0

백준 알고리즘

목록 보기
2/29
post-thumbnail

문제

입력

출력

입력

idea

처음에는 거듭 제곱을 해준 후 % 10만 해주려고 했다. 하지만 실행을 해보니 큰 수의 거듭제곱이 반복되면 int의 한계를 넘어서서 오류가 났다.
그 후의 생각은 마지막 수가 중요하니 뒷자리만 계산한 후 % 10을 해주는 것이다.
여기서 내가 생각하지 못했던 부분은 10이상의 수 중 나머지가 0일 경우 10번째 컴퓨터여야 하는데 예외처리를 하지 않아 0으로 나왔던 점이다.
대충 끼워맞추느라 코드는 지저분하지만 해결.

정리

  • a^b대신 마지막자리 수 * b % 10
    단 a가 10 이상이고 답이 0일 경우 10번째 컴퓨터
    b가 1일 경우 또한 마찬가지

Code

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner in = new Scanner(System.in);
		
		int T;
		int a,b;
		int data;
		
		T = in.nextInt();
		
		for (int i=0;i<T;i++)
		{
			a=in.nextInt();
			b=in.nextInt();
			data=a;
			
			if (b==0)
				System.out.println(1);
			
			else if (b==1) {
				if (a>=10 && a%10==0)
					System.out.println(10);
				else
					System.out.println(a%10);
			}
			
			else {
				for (int j=1;j<b;j++)
					data=data*a%10;
				
				if (a>=10 && data==0)
					data=10;
				System.out.println(data);
			}
		}
	}
}

결과

0개의 댓글