BEAKJOON
백준(2231번 분해합)풀이 C++
Shin_jisoo
2021. 1. 15. 22:55
728x90
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
1) 주석 없는 VERSION
#include <iostream>
#include <cmath>
#include <stdio.h>
using namespace std;
int find(int n) {
int sum = n;
while (n) {
sum = sum + (n % 10);
n /= 10;
}
return sum;
}
int main() {
int n;
cin >> n;
int answer = 0;
for (int i = 1;i <= n;i++) {
answer = find(i);
if (answer == n) {
cout << i;
return 0;
}
}
cout << 0;
}
2) 주석 있는 VERSION
#include <iostream>
#include <cmath>
#include <stdio.h>
using namespace std;
int find(int n) {
int sum = n;
//분해합 구하기
while (n) {
sum = sum + (n % 10);
n /= 10;
}
return sum;
}
int main() {
int n;
cin >> n;
int answer = 0;
//1부터 차례로 분해합 구하고, 분해합과 n 값이 일치할 때의 값 출력
//return 0 으로 멈춰주기
for (int i = 1;i <= n;i++) {
answer = find(i);
if (answer == n) {
cout << i;
return 0;
}
}
//일치하지 않을 경우 0 출력
cout << 0;
}