[C/C++]백준 1065

 

백준 1065 - 한수 (실버4)

1065 문제 링크

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오
99까지는 언제나 한수이다. 그러므로 주어진 정수가 100보다 작으면 정수의 값이 즉 한수의 수이다.
100부터 탐색을 하는데 백의 자리, 십의 자리, 일의 자리를 따로따로 관찰하기 위해 /와 %를 적절히 이용해서 구한다.
(십의 자리 수-일의 자리수)와 (일의 자리 수-십의 자리수) 값이 같으면 한수이다.
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
using namespace std;
int main() {
	int n;
	int result = 0;
	int x = 0;
	int y = 0;
	int z = 0;
	scanf("%d", &n);
	if (n<100) {
		result = n;
	}
	else {
		result = 99;
		for (int i = 100; i <= n; i++) {
			x = i / 100;
			y = (i%100) / 10;
			z = (i%100) % 10;
			if ((y - x) == (z - y)) {
				result++;
			}
		}
	}
	
	printf("%d", result);
	return 0;
}