C로 구현한 1009번 분산처리 문제 풀이입니다.
https://www.acmicpc.net/problem/1009
#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을 나눈 나머지 값을 구하도록 하여
크기를 줄여가면서 수행해야 한다.
'백준(C언어) 풀이 > 수학' 카테고리의 다른 글
백준(C) 13458번 시험 감독 풀이 (0) | 2021.09.24 |
---|---|
백준(C) 2455번 지능형 기차 풀이 (0) | 2021.09.24 |
백준(C) 1476번 날짜 계산 풀이 (0) | 2021.09.24 |
백준(C) 3053번 택시 기하학 풀이 (0) | 2021.09.23 |
백준(C) 3046번 R2 풀이 (0) | 2021.09.23 |