https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
한 자리 수와 두 자리 수는 각 자리 수의 차가 일정하므로 반드시 한수이다.
또 세 자리 수는 브루트포스로 판정이 가능하고, 1000은 한수가 아님이 자명하므로
입력이 두 자리 수 이상이라면 브루트포스로 정답을 출력할 수 있다.
#include <cstdio>
int main() {
// input: 한수의 개수를 계산할 범위, ans: 범위 내의 한수의 개수
int input, ans = 99;
scanf("%d", &input);
// 한 자리 수는 길이 1짜리 수열이고, 두 자리 수는 길이 2짜리 수열이다
// 길이가 2 이하인 수열은 각 수의 차가 일정하므로 반드시 한수이다
// 따라서 input <= 99라면 범위 내의 수는 반드시 한수이다
if (input <= 99) ans = input;
// 세 자리 수는 완전 탐색을 통해 범위 안의 수가 한수인지 판정
else for (int i = 100; i <= input; i++)
if ((i / 100 - (i / 10) % 10) == ((i / 10) % 10) - i % 10)
ans += 1;
//한수의 개수를 출력
printf("%d\n", ans);
return 0;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
1085번: 직사각형에서 탈출 (0) | 2021.12.06 |
---|---|
1074번: Z (0) | 2021.12.06 |
1049: 기타줄 (0) | 2021.12.06 |
1043번: 거짓말 (0) | 2021.12.06 |
1041번: 주사위 (0) | 2021.12.06 |