상세 컨텐츠

본문 제목

[C] 카프리카 수 구하기

C++ 문법

by simstealer 2023. 1. 27. 14:01

본문

/*
    카프리카 수
카프리카 수란 인도의 수학자 D.R.카프리카의 의해 정의한 수이다.

어떤 수의 제곱수를 두 부분으로 나누어 더하였을 때 다시 원래의 수가 되는 수들을 의미한다.

예를 들어 45는 카프리카 수인데, 45² = 2025이고, 20+25 = 45이기 때문이다.

어떤 수를 입력 받고 그 수가 카프리카 수인지 아닌지를 출력하는 함수를 만드시오.

어떤 수를 입력 받고 자릿수가 그 수인 모든 카프리카 수를 출력하시오.

어떤 수를 입력 받고 어떤 수 이하의 모든 카프리카 수를 출력하시오.

이 셋중에서 원하는 유형 하나를 골라 푸시오.

입력 (유형 1)

print(kaprekar_number(1))
print(kaprekar_number(45))
print(kaprekar_number(297))
print(kaprekar_number(3213))​
*/
#include <stdio.h>
#include <string.h>
#include <math.h>

void Print(int number)
{
    // 입력
    //int inputNumber = 1;

    // 처리
    // 1. 제곱
    int squareNumber = 0;
    squareNumber = pow(number, 2);
    printf("%d", squareNumber);
    int count = 0;
    int num = squareNumber;

    while (num != 0)
    {
        num = num / 10;
        count++;
    }

    if (count % 2 == 1)
    {
        printf("%d는 카프라카 수가 아닙니다.", number);
        return;
    }

    // 2. 자리수 계산
    int sumNumber = 0;
    int division = 1;
    for (int i = 0; i < count - 2; i++)
    {
        division = division * 10;
    }

    int num1;
    int arr[2] = { 0 };

    arr[0] = squareNumber / division;
    arr[1] = squareNumber % division;

    // 3. 더하기
    int sum = 0;

    for (int i = 0; i < count / 2; i++)
    {
        sum += arr[i];
    }

    //printf("%d", sum);

    // 출력
    if (sum == number)
    {
        printf("%d는 카프리카 수 입니다.", number);
    }
    else
    {
        printf("%d는 카프리카 수가 아닙니다.", number);
    }
}

int main(void)
{
    Print(45);
    return 0;
}

'C++ 문법' 카테고리의 다른 글

[C] 퀵 정렬(qsort)  (0) 2023.01.26
[C] 퀵 정렬  (0) 2023.01.26
[C] 삽입 정렬  (0) 2023.01.25
[C] 버블 소트  (0) 2023.01.25
[C++] inline 함수  (0) 2023.01.04

관련글 더보기

댓글 영역