본문 바로가기
BOJ

BOJ 2231 분해합

by 홍code 2022. 3. 9.

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

 

2231번: 분해합

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

www.acmicpc.net

요약

자연수 N을 입력했을때 [N = M(자연수)+ M을 이루는 각자리수의 합]이 성립하는 M을 구하여라.

풀이

자연수 N의 분해합은 당연히 N보다 클수 밖에 없다. 그러므로 입려한 N의 생성자는 N보다 작을 것이다. N의 최대크기가 1,000,000이므로 1부터 전부다 확인해봐서 가장 처음으로 조건이 성립할때 break해주고 출력해준다. 조건을 만조하는 생성자가 없는 경우에는 0을 출력해준다.

코드

#include<iostream>
using namespace std;
int n,n2,ans,i;
int main() {
	ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
	cin >> n;
	for (i = 1; i <= n; i++) {
		ans = i;
		n2 = i;
		while (n2) {
			ans += n2%10;
			n2 /= 10;
		}
		if (ans == n)
			break;
	}
	if (ans == n) cout << i << "\n";
	else cout << "0" << "\n";
}

'BOJ' 카테고리의 다른 글

BOJ 1018 체스판 다시 칠하기  (0) 2022.03.09
BOJ 2503 숫자야구  (0) 2022.03.09
BOJ 10448 유레카 이론  (0) 2022.03.09
BOJ 3085 사탕게임  (0) 2022.03.09
BOJ 2309 일곱난쟁이  (0) 2022.03.09

댓글