[백준 2231] 분해합

alsry._.112·2023년 8월 30일
0

백준

목록 보기
39/102

🔗문제 풀러가기
단계별로 풀어보기 단계 12의 2번째 문제이다.

문제 분석

주어지는 수 input은 1부터 1,000,000까지 이므로 1부터 input -1까지의 반목문을 통해 생성자를 찾아내었다.

코드

#include <iostream>
#include <string>
 using namespace std;

 int main()
 {
	 int input;

	 cin >> input;

	 for (int i = 1; i < input; i++)
	 {
		 int sum = i;
		 int temp = i;

		 while (temp != 0)
		 {
			 sum += temp % 10;
			 temp /= 10;
		 }

		 if (sum == input)
		 {
			 cout << i << " ";
			 return 0;
		 }
	 }

	 cout << "0";
 }

해석

  1. 수를 입력받는다.
  2. 입력받은 수의 -1만큼 for문을 돌린다.
  3. 반복문 내에서 분해합인 sum와 각 자리 수의 합인 temp를 선언한 후 i로 초기화 한다.
  4. while문을 통해 sum에 i의 각 자리수의 합을 더해 i의 분해합을 구한다.
  5. 그 후 만약 i의 분해합이 input과 같다면 i가 input의 생성자인 것이므로 출력한 후 return 을 하여 프로그램을 종료한다.
  6. 생성자를 찾지 못 하였다면 0을 출력하면 끝!
profile
소통해요

0개의 댓글