코딩테스트 - 하샤드 수, C언어

728x90
반응형

하샤드 수 구하기,

 

 

https://ko.wikipedia.org/wiki/%ED%95%98%EC%83%A4%EB%93%9C_%EC%88%98

 

하샤드 수 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 하샤드 수 또는 니번 수는 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 그 수가 나누어지는 양의 정수를 말한다. 즉 이말은 하샤드 수의 정의가 자기자신

ko.wikipedia.org

 

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

bool solution(int x) {
    bool answer = false;
    int harshad=0;
    int xbuf=x;
    while(xbuf > 0)    {
        harshad += xbuf % 10;
        xbuf /= 10;
    }

    if(x % harshad == 0)    {
        answer = true;
    }

    return answer;
}

 

x를 각 자릿수 별로 분리한 수를 모두 더한 값(harshad)으로 x를 나눴을 때 나눠 떨어지는, 즉 나머지가 0이면 하샤 드 수이다.

 

238로 예를 들면,

 

2+3+8 = 13이다.

 

238/13 = 18.3 이다. 따라서, 때문에 238은 하샤드 수가 아니다.

 

다시 18로 예를 들어보면, 

 

1+8 = 9,

 

18/9 = 2, 

 

나누어 떨어진다. 즉 나머지가 없기 때문에 하샤드 수라고 할 수 있다.

728x90
반응형