Algorithm
[BaekJoon / C++] 1065번 : 한수
송만덕
2021. 10. 18. 05:29
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
풀이
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
31
32
33
34
35
|
#include <iostream>
using namespace std;
int Han(int n);
int main()
{
int N;
cin >> N;
cout << Han(N) << "\n";
return 0;
}
int Han(int N) //한수 계산
{
int i, count = 0, hund, ten, one;
if (N < 100)
return N;
else
{
for (i = 100; i <= N; i++) {
hund = i / 100;
ten = (i % 100) / 10;
one = (i % 100) % 10;
if ((hund - ten) == (ten - one))
count++;
}
return (99 + count);
}
}
|
cs |
기본적으로 100 이하의 수 중 등차수열은 일의 자리의 경우 1~9 모두 포함이 되며, 십의 자리의 경우 10 or 11 or 14 .. 등
모두 등차수열에 포함되기 때문에 입력된 N을 그대로 반환하도록 하였고
100 이상의 경우엔 자리수 마다의 등차를 계산하여 count 변수의 값을 증가시켰으며
총 99개 + count 갯수만큼 반환되게 하였다.