본문 바로가기
algorithm/Brute force

[백준/2231] 분해합

by blogsy 2020. 3. 31.

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그

www.acmicpc.net

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

int main() {
	int n;
	int m = 0;
	int cnt = 0;
	bool flag = false;
	cin >> n;

	int temp = n;
	while (temp != 0) {
		temp /= 10;
		cnt++;
	}

	if (n == 1) {
		m = 0;
	}
	else {
		int a = n - (9 * (cnt - 1));
		while (a<=n) {
			int b = a;
			int c = a;
			for (int i = 0; i < cnt; i++) {
				b += c % 10;
				c /= 10;
			}
			if (b == n) {
				m = a;
				break;
			}
			a++;
		}
	}

	cout << m;
	return 0;
}

'algorithm > Brute force' 카테고리의 다른 글

[백준/7568] 덩치  (0) 2020.03.31
[백준/2798] 블랙잭  (0) 2020.03.30

댓글