티스토리 뷰
Explain
- 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75 + 7 + 5 = 87이다.
- 이때 n을 d(n)의 생성자라고 하며 생성자가 없는 숫자를 셀프 넘버 라고 한다.
- 10000보다 작거나 같은 셀프넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
Solution
- 간단하게 1~10000까지의 수를 순회하며 d(n)을 실행 후 생성되는 n을 array를 활용하여 저장. 이때 array의 크기는 10001로 지정하며 array에 0이 저장되어 있는경우 생성자가 없는 수 이므로 셀프넘버이므로 해당 숫자만 출력.
Code
#define LIMIT 10000
int d(int n);
int main(void)
{
int n = 1,i;
char ss[LIMIT+1] = {0};
while(1)
{
int t = d(n);
if(n>=LIMIT)
break;
if(t<=LIMIT)
ss[t] = 1;
n++;
}
for(i = 1 ; i < LIMIT;++i)
{
if(ss[i] == 0)
printf("%d\n",i);
}
}
int d(int n)
{
int result = n;
if(n>=10000) result += n/10000;
if(n>=1000) result += (n%10000)/1000;
if(n>=100) result += (n%1000)/100;
if(n>=10) result += (n%100)/10;
result += n%10;
return result;
}
'Algorithm' 카테고리의 다른 글
Matrix chain multiplication (0) | 2016.10.12 |
---|---|
Floyd's Algorithm (0) | 2016.10.12 |
1065_한수 (0) | 2016.10.05 |
Matrix multiplication 행렬의 곱셈 (0) | 2016.09.19 |
Matrix 행렬 (0) | 2016.09.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Android
- Bit
- 안드로이드
- 행렬
- Highlighter
- Matrix
- 비트연산자
- C
- 도메인
- highlightjs
- 비트
- python
- algorithm
- 수식
- Kotlin
- DNS
- 비트마스크
- 알고리즘
- mysql
- mathjax
- Math
- 삼항연산자
- robocopy
- syntax highlighting
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함