분산처리 문제는 무식하게 풀려면 얼마든지 풀 수 있지만, 효율적인 동작을 위해서는 정수론이 필요합니다.
문제 자체는 이해 자체가 어렵지는 않습니다.
데이터가 N개 있는데, 10대의 컴퓨터로 순차적으로 데이터 1개씩을 처리할 경우, 마지막 데이터를 처리하는 컴퓨터는 어떤 것이 될 것인가가 문제입니다.

아래는 이 문제의 링크입니다.
https://www.acmicpc.net/problem/1009
그런데 여기서 주어진 N이란 숫자가 두개의 숫자 a, b 가 주어졌을 때,
더구나 a 의 범위는 100까지이고, b란 범위는 1,000,000 까지입니다. 나머지 연산을 할 경우, 밑수를 나머지 연산을 할 수 있지만, 지수를 나머지 연산하는 것은 중학 수학 범위에서는 벗어납니다.
그래도 숫자가 크지 않으니까
계산을 해보면, 순환을 하는 모습을 볼 수 있습니다. 이번에는 a = 2, b = 5 라고 해볼께요.
두개의 계산을 해보면,
정수론을 조금 공부해보았다면, 오일러의 수
이것을 이용하면 쉽게 이 문제를 풀 수 있습니다.
아래는 제가 짠 소스입니다. 참고용으로 봐주세요.
//----------------------------------------------------------------------------------
// baekjoon #1009
// - by Aubrey Choi
// - created at 2019-09-08
//----------------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int t, a, b, c;
scanf("%d",&t);
while(t--)
{
scanf("%d%d", &a, &b); c=1; a%=10; b=(b+3)%4+1;
while(b--) c*=a;
printf("%d\n", (c+9)%10+1);
}
return 0;
}
'Programming > BOJ' 카테고리의 다른 글
[C/C++] 백준 #1011 Fly me to the Alpha Centauri (0) | 2019.12.22 |
---|---|
[C/C++] 백준 #1010 다리 놓기(조합) (0) | 2019.12.21 |
#1007 벡터 매칭(Mathematics) (0) | 2019.12.20 |
[C/C++] 백준 #1005 ACM Craft(위상 정렬) (0) | 2019.12.19 |
백준 #1004 어린왕자 (0) | 2019.12.19 |
댓글