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

C Strong Number를 확인하는 프로그램

<시간/>

숫자 'n'이 주어지면 주어진 숫자가 Strong Number인지 여부를 확인해야 합니다.

강한 숫자는 모든 자릿수' 계승의 합이 숫자 'n'과 같은 숫자입니다. 계승은 해당 숫자를 포함하여 해당 숫자 아래에 있는 모든 숫자의 곱을 찾을 때를 의미하며 !로 표시됩니다. (느낌표), 예:4! =4x3x2x1 =24.

따라서 숫자가 강한지 여부를 찾으려면 숫자가 145인 것처럼 숫자의 모든 자릿수를 선택해야 합니다. 그런 다음 1, 4 및 5를 선택해야 합니다. 이제 각 숫자의 계승을 찾을 수 있습니다. 즉, 1입니다! =1, 4! =24, 5! =120.

이제 우리는 1 + 24 + 120을 합산하여 145를 얻습니다. 이는 주어진 입력과 정확히 동일하므로 숫자가 강한 숫자라고 말할 수 있습니다.

예시

Input: n = 124
Output: No it is not a strong number
Explanation: 1! + 2! + 4! = 27 which is not equal to n i.e, 124
Input: n = 145
Output: Yes it is a strong number
Explanation: 1! + 4! + 5! = 145

문제를 해결하기 위해 다음과 같은 접근 방식을 사용합니다. -

우리는 -

  • 단위 자릿수에서 시작하여 각 자리수를 취해 계승을 구합니다.
  • 각 숫자의 계승을 추가합니다.
  • 결과를 원래 숫자와 비교합니다. 같으면 숫자가 강한 숫자입니다. 그렇지 않으면 숫자가 강한 숫자가 아닙니다.

알고리즘

START
In Function int factorial(int r)
   Step1 -> Initialize int fact and set as 1
   Step2-> Loop while r>1
      Set fact as fact * r
      Decremnet r by 1
   End Loop
   Step 3-> Return fact
   End Function factorial
In Function int check(int n)
   Step 1-> Initialize int temp, rem and result, set result as 0
   Step 2-> Set temp as n
   Step 3-> Loop while temp
      Set rem as temp % 10
      Set result as result + factorial(rem)
      Set temp as temp/10
   End loop
   Step 4-> If result == n then,
      Return 1
   Step 5-> Else
   Return 0
   End function check
In main(int argc, char const *argv[])
   Step 1-> Initialise and set n as 145
   Step 2->If check(n) is valid then,
      Print "Yes it is a strong number”
   Step 3-> Else
      Print "no it is not a strong number”
STOP

예시

#include <stdio.h>
int factorial(int r) {
   int fact = 1;
   while(r>1) {
      fact = fact * r;
      r--;
   }
   return fact;
}
int check(int n) {
   int temp, rem, result = 0;
   temp = n;
   while(temp) {
      rem = temp % 10;
      result = result + factorial(rem);
      temp = temp/10;
   }
   if (result == n)
      return 1;
   else
      return 0;
}
int main(int argc, char const *argv[]) {
   int n = 145;
   if (check(n))
      printf("Yes it is a strong number\n");
   else
      printf("no it is not a strong number\n");
   return 0;
}

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Yes it is a strong number