알고리즘/백준

2231>분해합

Diademata 2018. 9. 2. 01:58
반응형

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


문제

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


자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.


입력

첫째 줄에 자연수 N(1≤N≤1,000,000)이 주어진다.


code >>


#include <iostream>

int main()

{

std::ios::ios_base::sync_with_stdio(false);

int input = 256, output =0, sum = 0, temp = 0;

std::cin >> input;

for(int i= 0; i<input; i++)

{

temp = sum = i;

while (temp > 0)

{

sum += temp % 10;

temp /= 10;

}

if (sum == input)

{

output = i;

break;

}

}

printf("%d\n", output == input ? 0 : output);

return 0;

}

반응형

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

1004>어린왕자  (0) 2018.09.23
1005>ACM Craft  (0) 2018.09.20
9252>LCS2  (0) 2018.08.20
9251>LCS  (0) 2018.08.04
1920>수 찾기  (0) 2018.06.24