백준 알고리즘 - 1009번 분산처리 문제입니다.
(참고 : https://www.acmicpc.net/problem/1009 )
코드 )
#include <stdio.h>
int main() {
int arr[10000];
int i, j, testcase, data, jegop, sum;
scanf("%d", &testcase);
for(i=0; i<testcase; i++) {
sum = 1;
scanf("%d %d", &data, &jegop);
for(j=0; j<jegop; j++) {
sum = (sum * data) % 10;
if(sum == 0)
arr[i] = 10;
else
arr[i] = sum;
}
}
for(i=0; i<testcase; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
- 먼저, testcase를 입력받아 총 몇 회 실행할 것인지 입력받도록 합니다.
그 후, data와 제곱수(jegop)을 입력받아, sum에 data를 곱한 후, 10으로 나눈 나머지를 구하게 되면 항상 1의자리만 남게 됩니다.
이 과정을 jegop번만큼 곱해주므로 for문 안에서 jegop만큼 수행하게 됩니다.
이렇게 반복 수행하여 나온 값(sum)이 0이라면 배열(arr)의 해당 번지에 10을 저장해주고, sum이 0이 아닌 다른 수라면 그 수를 배열의 해당 번지에 저장해주면 됩니다.
testcase만큼 입력을 받고 나서 arr에 분산처리된 값들이 저장 되면,
마지막으로 for문을 한번 더 testcase만큼 수행하여 arr에 저장 된 값들을 출력해주면 됩니다.
해당 문제에서 testcase에 대한 조건이 없었으므로 배열은 그냥 임의의 큰 수인 10000으로 잡았지만, 만약 testcase의 조건이 있었다면 배열의 크기를 testcase에 맞게 조정해주는 것이 좋겠죠.?
'Programming > Algorithm' 카테고리의 다른 글
백준 알고리즘 - 1026번 : 보물 (0) | 2016.04.18 |
---|---|
백준 알고리즘 - 1015번 : 수열 정렬 (0) | 2016.04.18 |
백준 알고리즘 - 1008번 : A/B (0) | 2016.04.18 |
백준 알고리즘 - 1003번 : 피보나치 함수 (2) | 2016.04.18 |
백준 알고리즘 - 1000번 : A+B (0) | 2016.04.18 |
WRITTEN BY