No Rules Rules

분해합 (feat. 백준, 2231번) 본문

생활/코테

분해합 (feat. 백준, 2231번)

개발하는 완두콩 2022. 8. 1. 21:36
728x90
반응형

분해합
https://www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

반응형
// woohyeon.kim
// https://www.acmicpc.net/problem/2231
#include <iostream>
#include <string>
using namespace std;
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	register int N, ans = static_cast<int>(1e9);
	string str;
	cin >> N;
	for (register int i = N - 1, j, v; i >= 1; --i) {
		str = to_string(i), v = 0;
		for (j = 0; j < str.size(); ++j)
			v += str.at(j) - '0';
		if (N == i + v)
			ans = min(ans, i);
	}
	if (ans == static_cast<int>(1e9))		cout << 0 << "\n";
	else						cout << ans << endl;
	return 0;
}
// *&)*@*
  1. N보다 작은 값을 A라고 할때, A의 각 자릿수를 더하고 A를 더했을때 그 값이 N이 된다면 해답입니다.
  2. 단, 해답 중 가장 작은 값이 문제의 요구 조건이므로 min값을 구해줍니다.
728x90
반응형
Comments