어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고함
등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말함
N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램 작성
N이 1~9 인 경우 자리수가 하나 뿐이므로 모두 등차수열이라고 할 수 있음
N이 10~99 인 경우 자리수가 두 개 뿐이므로 1 2 이든지 9 5 이든지, 모두 등차수열이라고 할 수 있음
ex) 10 : 길이가 2이고 각 항이 1 0 인 수열로, 공차가 -1인 등차수열임
11 : 길이가 2이고 각 항이 1 1 인 수열로, 공차가 0 인 등차수열임
...
100 : 길이가 3이고 각 항이 1 0 0 인 수열로, 등차수열이 아님
101 : 길이가 3이고 각 항이 1 0 1 인 수열로, 등차수열 아님
...
123 : 길이가 3이고 각 항이 1 2 3 인 수열로, 공차가 1인 등차수열임
246 : 길이가 3이고 각 항이 2 4 6 인 수열로, 공차가 2인 등차수열임
...
등등
#include<iostream>
bool hansoo(int X) {
if (X < 100)
return true;
int a, b, c;
a = X / 100;
b = X % 100 / 10;
c = X % 10;
if (b - a == c - b)
return true;
return false;
}
int main() {
int N, cnt = 0;
std::cin >> N;
for (int i = 1; i <= N;i++){ // N보다 작거나 같은 한 수의 개수를 출력하기 위한 반복문
if (hansoo(i)) // hansoo(X) 함수 활용
cnt++; // 한수인 숫자의 개수 세기
}
std::cout << cnt;
}
a 는 백의 자리 수
b 는 십의 자리 수
c 는 일의 자리 수
100보다 작은 수는 자리수가 두 개 뿐이므로 1 2 이든지 9 5 이든지, 모두 등차수열임
공차가 같음을 판별해야하므로 b-a 와 c-b가 같은지 비교
hansoo 함수를 활용하여 한수인 숫자의 개수를 셈
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #10809_알파벳 찾기_c++ (0) | 2021.10.25 |
---|---|
baekjoon #11720_숫자의 합_c++ (0) | 2021.10.25 |
baekjoon #4673_셀프넘버_c++ (0) | 2021.10.25 |
baekjoon #15596_정수 N개의 합_c++ (0) | 2021.10.25 |
baekjoon #4344_평균은 넘겠지_c+ (0) | 2021.10.25 |