Computer Science/C++

백준 C++ | #12 BOJ1110 더하기 사이클 C++ 문제 풀이

토마토. 2022. 8. 11. 17:45

1110번: 더하기 사이클 (acmicpc.net)

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 


#include <iostream>

int main() {
	// 첫째 줄에 N이 주어진다. 
	int n;
	std::cin >> n;

	// 처음에 주어진 수의 가장 오른쪽 자리 수와
	// 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만들 수 있다. 

	// 몇 번만에 원래 수로 돌아올 수 있을까? 

	int tmp = n;
	int next = -1, trial = 0;
	while (next != n) {
		// 각 자리 숫자를 더한다
		int sumn = tmp % 10 + tmp / 10;

		// 처음에 주어진 수의 가장 오른쪽 자리 수와
		// 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만들 수 있다. 
		next = 10 * (tmp % 10 )+ sumn % 10;
		tmp = next;
		trial++;
	}

	std::cout << trial << std::endl;

	return 0;
}