(cpp) Baekjoon 2231번 문제 ‘분해합’ - 브루트포스

Baekjoon 2231번 문제 ‘분해합’ - 브루트포스


문제
여러번 시도했는데, 마지막에 cout«“0”;인경우도 추가해줘야함

풀이

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;
int n,j,part;
int main() {
	//자연수 m
	//m의 분해합 =m+m을 이루는 각 자리수 (245분해합 = 245+2+4+5= 256)
	//m의 분해합 = n (256)
	//m : n의 생성자 --> 245는 256의 생성자
	//어떤수(n)의 가장 작은 생성자 구하기
	//1부터 그냥 쭉 구하기

	cin >> n ;

	for (int i = 1; i < n; i++) {
		j = i;
		part = i;
		while (j != 0) {
			part = part + j % 10; //45+5+4
			j = j / 10; //0
		}

		if (part == n) {
			printf("%d", i);
			return 0 ;

		}
	}
	cout << "0";
	return 0;
}