최대 1 분 소요

문제

각 자리수가 등차 수열인 수를 한수라고 한다. 그래서 한 자리수와 두 자리수는 무조건 한수 인 것이다. 그리고 111, 123, 135 와 같은 수는 한수라는 것이다.

코드

#include <iostream>

int main()
{
    int n;
    int cnt = 0;

    std::cin >> n;

    if (n < 100)
    {
        cnt += n;
    }
    else
    {
        cnt += 99;
        for (int i = 100; i <= n; i++)
        {
            int a = i / 100;
            int b = i / 10 % 10;
            int c = i % 10;
            if ((b - a) == (c - b))
            {
                cnt++;
            }
        }
    }
    std::cout << cnt << std::endl;
}

풀이

1부터 1000까지만 입력이 가능하기 때문에 가능한 코드이다. 여튼 입력받은 수가 100 이하라면 입력받은 수까지 모두 한수이고, 입력받은 수가 100 이상이라면 (십의 자리수 - 백의 자리수)와 (일의 자리수 - 십의 자리수) 를 비교해서 등차수열인지 아닌지를 확인한다.

댓글남기기