반응형
#2331 반복수열 문제는 단순하게 구현만하면 됩니다.
문제의 링크입니다.
https://www.acmicpc.net/problem/2331
이 문제에서 구현의 초점은 바로 자리수를 가져오는 것과 그것을 p제곱하는 것입니다. A란 숫자가 있으면, p값이 바뀌지 않는다면, 모든 자릿수를 p제곱한 후의 합은 항상 같은 숫자가 됩니다.
저는 개수를 세기 위해서 배열에 count를 하게 했습니다. 배열의 최대 개수는 9의 5제곱은 59049이므로 이것을 4개 더한 236196보다 크게 잡아주면 됩니다.
제가 구현한 소스입니다.
//------------------------------------------------
// baekjoon #2331
// - by Aubrey Choi
// - created at 2019-06-28
//------------------------------------------------
#include <stdio.h>
int next(int a, int p)
{
int sum = 0, t, s;
while(a)
{
t = a % 10;
a /= 10;
s = t;
for(int i = 1; i < p; i++, s *= t);
sum += s;
}
return sum;
}
int main()
{
int a, p, count = 1;
static int v[500000];
scanf("%d%d", &a, &p);
while(v[a] == 0)
{
v[a] = count++;
a = next(a, p);
}
printf("%d\n", v[a]-1);
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[C/C++] 백준 #2352 반도체 설계(가장 긴 증가하는 부분수열) (0) | 2023.04.27 |
---|---|
[C/C++] 백준 #2346 풍선 터뜨리기(데크 자료구조) (0) | 2023.04.27 |
[C/C++] 백준 #2316 도시 왕복하기 2(포드-폴커슨 알고리즘) (0) | 2023.04.25 |
[C/C++] 백준 #2312 수 복원하기(수학) (0) | 2023.04.20 |
[C/C++] 백준 #2302 극장 좌석(동적 계획법) (0) | 2023.04.20 |
댓글