티스토리 뷰
Explain.
- 어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그수를 한수라고 한다.
- 등차수열은 연속된 두개의 수의 차이가 일정한 수열을 말한다.
- N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
Input
- 자연수 N ( N<=1000 )
Output
- 1보다 크거나 같고, N보다 작거나 같은 한수의 개수.
Solution
- 3자리수 미만의 수는 모두 한수이다. (2자리 이하의 수는 당연히 수열이 2개,1개이므로 무조건 등차수열이 성립한다.) 그러므로 N < 100 일경우 한수의 개수는 N개이다.
- N이 100이상 일 경우 각 자리수를 추출하여 모두 같거나(상수수열 이므로 등차수열) 각 자리수의 차이가 같은 경우 등차수열이므로 해당 100~N까지의 수를 순회하며 해당 조건을 만족하는 경우의 수를 합산하여 출력.
Code
int get_hansoo(int n);
int main(void)
{
int input;
scanf("%d",&input);
printf("%d\n",get_hansoo(input));
}
int get_hansoo(int n)
{
if(n < 100) return n;
else {
int i,hc = 99;
for(i=100; i <= n ; ++i)
{
int a[3]; // 1 , 10 , 100
if(i == 1000) break;
a[0] = (i % 1000) / 100;
a[1] = (i % 100) / 10;
a[2] = i % 10;
if((a[0] == a[1] && a[0] == a[2]) || a[0] - a[1] == a[1] - a[2]) hc++;
}
return hc;
}
}
Reference.
'Algorithm' 카테고리의 다른 글
Floyd's Algorithm (0) | 2016.10.12 |
---|---|
4673_셀프 넘버 (0) | 2016.10.05 |
Matrix multiplication 행렬의 곱셈 (0) | 2016.09.19 |
Matrix 행렬 (0) | 2016.09.19 |
Recursive_Fibonacci Sequence (0) | 2016.09.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- algorithm
- 비트마스크
- Highlighter
- highlightjs
- Kotlin
- 알고리즘
- mathjax
- Matrix
- 비트
- 수식
- 도메인
- 안드로이드
- C
- DNS
- 비트연산자
- syntax highlighting
- Bit
- Android
- Math
- python
- 삼항연산자
- 행렬
- mysql
- robocopy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함