숫자 n이 주어지면 그 숫자의 합이 숫자 n을 나누는지 여부를 확인해야 합니다. 알아내려면 단위 자리부터 시작하여 모든 숫자를 합한 다음 그 숫자를 최종 합으로 나누어야 합니다.
숫자 "521"이 있으므로 "5 + 2 + 1 =8"이 되는 숫자의 합을 찾아야 하지만 521은 나머지를 남기지 않고 8로 나눌 수 없습니다.
60을 나눌 수 있고 나머지가 남지 않는 "6+0 =6"인 "60"의 또 다른 예를 들어보겠습니다.
예시
Input: 55 Output: No Explanation: 5+5 = 10; 55 not divisible by 10 Input: 12 Output: Yes Explanation: 1+2 = 3; 12 is divisible by 3
아래에 사용된 접근 방식은 다음과 같습니다. -
이 문제를 해결하려면 입력에서 각 자릿수를 가져와서 숫자의 각 자릿수의 합을 찾은 다음 숫자를 나누는지 여부를 확인해야 합니다.
- 입력 받기
- 사용하는 단위 자리에서 각 숫자를 가져와서 처음에는 0이어야 하는 합계 변수에 추가합니다.
- 입력을 숫자의 합으로 나눕니다.
- 결과를 반환합니다.
알고리즘
In function int isDivisible(long int num) Step 1-> Declare and initialize temp = num, sum = 0 Step 2-> Loop While num Declare and initialize k as num % 10 Set sum as sum + k Set num as num / 10 End Loop Step 3-> If temp % sum == 0 then, Return 1 Step 4-> Return 0 End function In main() Step 1-> Declare and initialize num as 55 Step 2-> If isDivisible(num) then, Print "yes " Step 3-> Else Print "no "
예시
#include <stdio.h>
// This function will check
// whether the given number is divisible
// by sum of its digits
int isDivisible(long int num) {
long int temp = num;
// Find sum of digits
int sum = 0;
while (num) {
int k = num % 10;
sum = sum + k;
num = num / 10;
}
// check if sum of digits divides num
if (temp % sum == 0)
return 1;
return 0;
}
int main() {
long int num = 55;
if(isDivisible(num))
printf("yes\n");
else
printf("no\n");
return 0;
} 출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
No