728x90
#include <stdio.h>

int main(void) {
    int num;
    int number = 99;
    scanf_s("%d", &num);
    if (num < 100) {
        printf("%d", num);
    }
    if (num >= 100) {
        for (int i = 100; i <= num; i++) {
            int num1 = i / 100;
            int num2 = (i % 100) / 10;
            int num3 = (i % 100) % 10;

            if ((num1 - num2) == (num2 - num3))
                number++;
        }
        printf("%d\n", number);
    }
}

이 문제 역시 조금 까다로운 것 같다.

그리고 문제 이해가 좀 힘들었다.

한수 개념을 이해하지 못했기 때문이다.

인터넷을 뒤져서 조금 이해를 했는데

세자리가 있다면

백의자리수-십의자리수=십의자리수-일의자리수

가 성립한다면 한수라고 한다.

 

그리고 이러한 한수가 그 숫자안에 얼마나 있는지에 대해서

구하는 문제인 것 같다.

 

100미만의 수에서는 모두가 성립될 수 밖에없다.

자리수가 없기때문이다.

그리고 나머지는 위의 노란색의 공식을 따르면된다.

 

백의자리수,십의자리수, 일의자리수 구하는 것은

나누깅와 나머지 구하기로 만들면되고

인터넷에서 본 코드는 int와 구하는 것을 분리해 놓았는데

나는 이를 간단하게 하기 위해서 합쳐놓았다.

그래도 문제없이 출력된다.

숫자 작은것부터 차례대로 계산해야 하므로

꼭 i를 이용하여 계산을 하면된다.

그리고 공식을 적용한뒤 계속 숫자를 더해준다.

 

마지막으로 출력을 number로 넣어주면 완성이다.

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

728x90

+ Recent posts