[Baekjoon 백준] 1065번 : 한수

  1065번 : 한수

BAEKJOON ONLINE JUDGE (백준 문제풀이 채점 사이트)

 

문제링크

https://www.acmicpc.net/problem/1065

 

한수는 "각 자리수들이 등차수열을 이루는 수"이다.

등차수열이란 "연속하는 두 항의 차이가 모두 일정한 수열"을 뜻한다.

 

예를 들어 123 은 백의 자리 1과 십의 자리 2는 1의 차이가 나며,

십의 자리 2와 일의 자리 3이 1의 차이가 나므로 등차수열이 성립하고,

한수라고 볼수 있다.

 

한 자리 수는?

뒤 숫자가 없기 때문에 등차수열이 성립한다.

 

두 자리 수는?

숫자의 차이가 어떤 숫자가 나오더라도 세 번째 수가 없기 때문에 성립한다.

그러므로 1~99까지는 모두 한수이다.

 

우리가 구하고자 하는 것은 N이 주어질 때 1~ N까지의 한수를 카운트 한 값이다.

 

N의 최대값이 1000이기 때문에 결국 세 자리수의 한수만 구하면 답을 구할 수 있다.

 

 

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
#include <std io.h>
 
int main(void)
{
    int N,cnt;
    int a, b, c;
    scanf("%d"&N);
 
    if (N < 100)
    {
        printf("%d", N);
    }
    else
    {
        cnt = 99;
        for (int i = 100; i <= N; i++)
        {
            a = i / 100;        // 100의 자리
            b = (i / 10) % 10;    // 10의 자리
            c = i % 10;            // 1의 자리
 
            if ((a - b) == (b - c))
            {
                cnt++;
            }
        }
        printf("%d", cnt);
    }
    return 0;
}
cs

 

이 글을 공유하기

댓글

Designed by JB FACTORY