728x90
반응형
https://www.acmicpc.net/problem/2331
1. 우선 수를 한자리씩 분리한다
참고 : https://develop-me-z.tistory.com/103
2. 각 자리를 거듭제곱하면서 더해준다
참고 : https://develop-me-z.tistory.com/104
3. 벡터에 구한 수가 들어있는지 확인하고 없으면 벡터에 넣고 있으면 인덱스를 반환한다
참고 : https://develop-me-z.tistory.com/105
#include <bits/stdc++.h>
using namespace std;
int a, p;
vector<int> v;
bool tmp;
int main(void) {
cin >> a >> p;
v.push_back(a);
int sum;
int result = 0;
while(tmp != true){
sum = 0;
while(a!=0){
int rest = a%10;
sum += pow(rest, p);
a /= 10;
}
if(find(v.begin(), v.end(), sum)==v.end()){ // v에 없으면
v.push_back(sum);
}else{
tmp = true;
result = find(v.begin(), v.end(), sum) - v.begin(); // 인덱스 출력
}
a = sum;
}
cout << result << endl;
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/BFS/C++] 2178번 미로 탐색 (0) | 2022.12.30 |
---|---|
[백준/DFS/C++] 4963번 섬의 개수 (0) | 2022.12.30 |
[백준/DP/C++] 11055번 가장 큰 증가 부분 수열 (0) | 2022.12.29 |
[백준/ DFS&BFS/ C++] 10451번 순열 사이클 (0) | 2022.12.29 |
[백준/ DFS&BFS/ C++] 11724번 연결 요소의 개수 (0) | 2022.12.29 |