시나브로

[백준] 2231번 분해합 본문

알고리즘/백준

[백준] 2231번 분해합

혬혬 2019. 12. 31. 17:03
728x90

완전탐색으로 1부터 n까지의 모든 숫자를 탐색하였다. 

각 자리의 합은 나머지와 나눗셈으로 구현하였다. 

#include<stdio.h>
#include<vector>
#include<iostream>
#include <algorithm>
using namespace std;
int main(void) {
	freopen("inp.inp", "r", stdin);
	freopen("out.out", "w", stdout);
	long long n;
	scanf("%lld", &n);
	long long box = 0;
	long long same = 0;
	for (long long i = 1; i <= n; i++) {
		box = i;
		same = i;
		for (;;) {
			box += same % 10;
			if (same < 10)
				break;
			same /= 10;
		}
		if (n == box) {
			printf("%lld", i);
			return;
		}
	}
	printf("0");
	return 0;
}

 

 

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

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

8393 합  (0) 2020.01.09
[백준] 체스판 다시 칠하기  (0) 2019.12.31
[백준] 7568번 덩치  (0) 2019.12.31
[백준] 2798 번 블랙잭  (0) 2019.12.31
[ 백준 ] 14500번 테트로미노 _ 완전 탐색  (0) 2019.12.30
Comments