cgy12306

[백준 BoJ] 2331 - 반복수열 본문

Algorithm/C++

[백준 BoJ] 2331 - 반복수열

cgy12306 2021. 4. 15. 20:58
// https://www.acmicpc.net/problem/2331
// 반복수열
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int calc(int A, int P) {
	int num = 0, tmp = 1;

	while (A) {
		for (int i = 0; i < P; i++) {
			tmp *= (A % 10);
		}
		num += tmp;
		tmp = 1;
		A /= 10;
	}
	return num;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	vector<int> D;
	vector<int>::iterator it;
	int A, P, num;
	cin >> A >> P;
	
	D.push_back(A);

	while (1) {
		A = calc(A, P);
		it = find(D.begin(), D.end(), A);
		if (it != D.end()) { // 있으면
			D.erase(it, D.end());
			break;
		}
		else D.push_back(A); // 없으면
	}
	
/*	for(auto next : D) {
		cout << next << "\n";
	}
*/
	cout << D.size();

}

'Algorithm > C++' 카테고리의 다른 글

[백준 BoJ] 2606 - 바이러스  (0) 2021.06.29
[백준 BoJ] 1654 - 랜선 자르기  (0) 2021.06.29
[백준 BoJ] 11724 - 연결 요소의 개수  (0) 2021.04.15
[백준 BoJ] 1978 - 소수 찾기  (0) 2021.04.14
[백준 BoJ] 1920 - 수 찾기  (0) 2021.04.14
Comments