2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
해결방법
처음부터 모든 경우를 다 시행해 본다.
매번 자릿수를 구해주어 최소의 부분합을 구해 입력한 숫자와 맞는지 계속 검사한다.
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N;
cin >> N;
int digit = 0;
int ans = 1;
int tmp = ans;
ans = 1;
while (ans < N)
{
digit = 0;
int i = 0;
int sum = 0;
tmp = ans;
while (tmp > 0)
{
tmp /= 10;
digit++;
}
tmp = ans;
while (i < digit)
{
sum += tmp % 10;
tmp /= 10;
i++;
}
if (sum + ans == N)
{
cout << ans;
return 0;
}
ans++;
}
cout << 0;
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 1018번] 체스판 다시 칠하기 (0) | 2023.08.04 |
---|---|
[C++/백준 19532번] 수학은 비대면 강의입니다. (0) | 2023.08.03 |
[C++/백준 2745번] 진법 변환 (0) | 2023.07.27 |
[C++/백준 2941번] 크로아티아 알파벳 (0) | 2023.07.24 |
[C++/백준 10988번] 팰린드롬인지 확인하기 (0) | 2023.07.24 |