Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 숫자가 C++에서 해당 숫자의 계승의 합을 나누는지 확인하십시오.

<시간/>

정수가 있다고 가정하고 숫자가 자릿수의 계승의 합을 나누는지 찾아야 합니다. 숫자가 19이고 계승의 합이 (1! + 9!) =362881이라고 가정하고 이것은 19로 나눌 수 있습니다.

이 문제를 해결하기 위해 숫자를 취한 다음 각 자릿수의 계승을 계산하고 합을 더합니다. 합이 숫자 자체로 나눌 수 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

예시

#include <iostream>
using namespace std;
int factorial(int n){
   if(n == 1 || n == 0)
      return 1;
   return factorial(n - 1) * n;
}
bool isDigitsFactDivByNumber(int num){
   int temp = num;
   int sum = 0;
   while(num){
      int digit = num % 10;
      sum += factorial(digit);
      num /= 10;
   }if(sum%temp == 0){
      return true;
   } return false;
}
int main() {
   int number = 19;
   if (isDigitsFactDivByNumber(number))
      cout << "Yes, the number can divides the sum of factorial of digits.";
   else
      cout << "No, the number can not divides the sum of factorial of digits.";
}

출력

Yes, the number can divides the sum of factorial of digits.