Baekjoon/단계별로 풀어보기

[BOJ / 백준] 2231번 분해합 C++ 문제 풀이

728x90

단계별로 풀어보기 -  브루트 포스 단계 - [2단계] 2231번

문제

문제 링크 : www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

입력 복사 : 

216

 

 

CODE

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

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

	int n, result = 10000001;
	int generate;
	cin >> n;

	for (int i = 1; i <= n; i++) {
		generate = i + (i % 10);
		for (int j = 1; j <= log10(i); j++) {
			generate += (i % (int)pow(10, j + 1)) / pow(10, j);
		}
		if (generate == n && i < result)
			result = i;
	}
	if (result > 1000000)
		cout << 0 << '\n';
	else
		cout << result << '\n';
}

 

 

 

결과

728x90