- C언어 : 함수(3)
09.JUN.2022
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은
연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고,
N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
두 자리 수는 연속된 수의 차이가 몇이든 상관없이 일정한 차이가 된다.
세 자리 수부터 백의 자리와 십의 자리 차이와 십의 자리와 일의 자리 차이가 같아야 한다. 즉, 두 자리 수인 99까지 등차수열은 99개다.
#include <stdio.h>
int HanSu(int n);
int main()
{
int n;
scanf("%d", &n);
printf("%d", HanSu(n));
return 0;
}
int HanSu(int n)
{
int sum = 0;
if (n > 99) // 입력받은 수가 3자리일 때
{
sum += 99; // 99까지는 등차수열 99개
// 99+ 입력받은 수까지 등차수열 개수 count
for (int i = 100; i <= n; i++) {
int n1 = i / 100; //백의 자리
int n2 = i / 10 % 10; //십의 자리
int n3 = i % 10; //일의 자리
if (n1 - n2 == n2 - n3) sum++;
}
}
else sum = n; // 입력받은 수가 2자리일 때 = 입력받은 수만큼 등차수열 존재
return sum;
}