Notice
Recent Posts
Recent Comments
Link
궤도
[백준] 4673번 : 셀프 넘버 본문
문제
풀이
A가 B의 생성자가 되기 위해선 A<B의 관계를 충족해야 한다. 그렇다면 10,000 이하의 모든 숫자에 대해 그 수가 생성자가 있다면 그 역시 10,000 이하일 것이다. 그렇다면 10,000 이하의 모든 수에 대해 d(n) 함수를 실행해서 생성자가 있는 숫자들을 체크한다. 체크되지 않은 숫자는 셀프 넘버일 것이다.
소스코드
#include <iostream>
using namespace std;
int func(int n) {
int sum = n;
while (n != 0) {
sum += (n % 10);
n /= 10;
}
return sum;
}
int main() {
int i;
int num[10001];
for (i = 0; i < 10001; i++)
num[i] = 1;
for (i = 0; i < 10001; i++) {
if(func(i)<10001)
num[func(i)] = 0; //생성자가 있으면 0으로
}
for (i = 0; i < 10001; i++) {
if (num[i] == 1)
cout << i << endl;
}
}
Comments