백준(C언어) 풀이/수학

백준(C) 1009번 분산처리 풀이

개발윗미 2021. 9. 27. 11:54

C로 구현한 1009번 분산처리 문제 풀이입니다.

 

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

 

1009번: 분산처리

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

www.acmicpc.net


#include <stdio.h>

int main() {
	long long int tc, a, b;
	scanf("%lld", &tc);
	for(int i=0; i<tc; i++) {
		scanf("%lld %lld", &a, &b);
		long long int result = 1;
		for(int j=1; j<=b; j++) {
			result *= a;
			result %= 10;
			if(result == 0)
				result = 10;
		}
		printf("%lld\n", result);
	}
}

 

이 문제는 a의 b제곱을 계산한 후 마지막 자리 수를 구하여 해결할 수 있다.

 

문제에서 요구한 바와 같이 a의 b제곱을 계산하는데, 모든 제곱수를 구하고 마지막에 처리한다면, 자료형의 범위를

 

초과하여 정확한 답을 도출해낼 수 없기 때문에 제곱 계산을 한번 수행할 때마다 10을 나눈 나머지 값을 구하도록 하여

 

크기를 줄여가면서 수행해야 한다.