알고리즘

백준 1009번 분산처리

hyun0229 2022. 5. 8. 21:51

 

https://www.acmicpc.net/problem/1009

 

1009번: 분산처리

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

www.acmicpc.net

위 문제의 풀이입니다.

#include <iostream>

int main()
{
	int t, b, a;
	std::cin >> t;
	for (int i = 0; i < t; i++)
	{
		std::cin >> a >> b;
		if (a%10==0) //a가 10의 배수일 경우 무조건 10번째 컴퓨터
		{
			std::cout << 10<<"\n"; 
		}
		else
		{
			int z = 1;
			for (int x = 0; x < b % 4 + 4; x++) // 결국 끝 자리수는 4단위로 반복됨 0방지를 위해 4더함
			{
				z *= a%10; //z에 a%10을 곱하는 이유는 오버플로우 방지

			}

			std::cout << z % 10 << "\n";
		}
	
	}
}

위의 추가적인 설명으로는

 

1= 1, 1, 1, 1, 1

2= 2, 4, 8, 16, 32

3= 3, 9, 27, 81 ,243

.

.

.

8= 8, 64, 512, 4,096, 32,768

9= 9, 81, 729, 6,561, 59,049

4단위로 뒷자리가 반복됨

 

실행결과