개발개발자
한수 (1065번) 본문
1. 문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
2. 포인트
1) 자릿수 분할
- 100의 자리 이상 분할하여 한수 검증
- 100 미만 숫자는 한수로 처리
3. 소스코드
#include <stdio.h>
int main()
{
int hanNum;
int cnt = 0;
int d1, d2;
int a, b, c;
int num = 100;
scanf("%d", &hanNum);
if (hanNum == 1000)
hanNum--;
if (100 <= hanNum && hanNum <= 999)
{
while (num <= hanNum)
{
a = num / 100;
b = num / 10 - (a * 10);
c = num % 10;
d1 = a - b;
d2 = b - c;
if (d1 == d2)
cnt++;
num++;
}
cnt = cnt + 99;
}
else
cnt = hanNum;
printf("%d", cnt);
return 0;
}
'알고리즘(Algorithm)' 카테고리의 다른 글
더하기 사이클 (1110번) (0) | 2017.03.04 |
---|---|
단어의 개수 (1152번) (0) | 2017.03.04 |
OX퀴즈 (8958번) (0) | 2017.03.04 |
숫자의 개수 (2577번) (0) | 2017.03.04 |
셀프 넘버 (4673번) (0) | 2017.03.04 |