[백준 알고리즘/BOJ] 백준 1065번 한수 C++ 문제입니다.
1. 문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
2. 입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
<예제 입력>
110
3. 출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
<예제 출력>
99
4. 문제 풀이
위의 문제에서 보면 한수는 "각 자리수들이 등차수열을 이루는 수"를 말한다.
등차수열은 일정한 규칙이 있는 차이가 모두 일정한 수열을 말한다.
한 자리 수는 뒤의 숫자가 없기에 성립된다
두 자리 수도 세 번째 수가 없기에 성립된다.
세 자리 수는 등차수열이 이루어지지 않는 숫자들고 있기에 조건문을 확인한다.
5. 소스 코드
#include
using namespace std;
int main(void)
{
int input;
int count=0;
int A[4];
cin >> input;
for (int i = 1; i <= input; i++)
{
bool flag = true; //한수가 맞는지 확인
int a = 0;
int copy = i;
while (copy)
{
A[a++] = copy % 10;
copy /= 10;
}
//세자리 수 조건문
if (a > 1)
{
int result = A[1] - A[0];
//한수 판별
for (int i = 2; i < a; i++)
if (A[i] - A[i - 1] != result)
{
flag = false;
break;
}
}
//한수가 맞으면 count 증가
if (flag) count++;
}
cout << count << endl;
}
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
백준 10818번 최소, 최대 파이썬(Python) (2) | 2019.11.08 |
---|---|
백준 2588번 곱셈 파이썬(Python) (0) | 2019.11.06 |
[백준알고리즘/BOJ] 백준 1330번 두 수 비교하기 파이썬(Python) (0) | 2019.10.22 |
[백준알고리즘/BOJ] 백준 2557번 파이썬(Python) (0) | 2019.10.22 |
[백준 알고리즘/BOJ] 백준 10872번 팩토리얼 C++ (0) | 2019.08.23 |
[백준 알고리즘/BOJ] 백준 15596번 정수 N개의 합 C++ (0) | 2019.08.16 |
[백준 알고리즘/BOJ] 백준 2750번 수 정렬하기 C++ (0) | 2019.08.14 |
[백준 알고리즘/BOJ] 백준 2798번 블랙잭 C++ (1) | 2019.08.14 |
최근댓글