문제링크 : https://www.acmicpc.net/problem/2231
요약
자연수 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 |
댓글