백준
백준 1009번 분산처리 - C언어(모듈러)
해보쟈
2024. 1. 23. 09:49
처음에는 그냥 숫자 입력받고 pow 쓴 후, 그 숫자의 마지막 숫자만 출력하면 되겠다고 생각했으나 숫자 범위가 너무 커서 오류가 생겼다. 그래서 마지막 숫자만 필요하다는 생각 + 구글링 해보니 우리에게는 모듈러가 있었다!!
< 모듈러 >
A mod B = R ... Q(몫)
A : 피제수
B : 제수
R : 나머지
Q : 몫
ex) 13 mod 5 = 3
그러니 모듈러의 개념을 이용하여 수가 커지기 전에 계속 10씩 나눠주면 된다.
#include <stdio.h>
int main(void) {
int T;
scanf("%d", &T);
for (int i = 0; i < T; i++) {
int a, b;
scanf("%d %d", &a, &b); //두 수 입력 받기
int temp = a;
for (int j = 1; j < b; j++) {
temp = temp * a % 10; //오버플로우 발생 방지 위해 나머지 연산 사용
}
if (temp % 10 == 0) { //10일때 생각해서 케이스 나눔
printf("%d\n", 10);
}
else
printf("%d\n", temp % 10);
}
}
끝!