Computer >> Máy Tính >  >> Lập trình >> lập trình C

C Chương trình kiểm tra số mạnh

Cho một số ‘n’, chúng ta phải kiểm tra xem số đã cho có phải là Số Mạnh hay không.

Số mạnh là số có giai thừa tổng của tất cả các chữ số bằng số 'n'. Giai thừa ngụ ý khi chúng ta tìm thấy tích của tất cả các số bên dưới số đó bao gồm cả số đó và được ký hiệu là! (Dấu chấm than), Ví dụ:4! =4x3x2x1 =24.

Vì vậy, để tìm một số có phải là số mạnh của nó hay không, chúng ta phải chọn mọi chữ số của số đó như số là 145 sau đó chúng ta phải chọn 1, 4 và 5 bây giờ chúng ta sẽ tìm giai thừa của mỗi số tức là 1! =1, 4! =24, 5! =120.

Bây giờ chúng ta sẽ cộng 1 + 24 + 120 để chúng ta nhận được 145, chính xác như đầu vào đã cho, Vì vậy, chúng ta có thể nói rằng số là số mạnh.

Ví dụ

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

Phương pháp tiếp cận được sử dụng bên dưới như sau để giải quyết vấn đề -

Chúng tôi sẽ -

  • Lấy từng chữ số bắt đầu từ vị trí đơn vị và tìm giai thừa của nó.
  • Chúng tôi sẽ thêm các giai thừa đó của từng số.
  • So sánh kết quả với số ban đầu, Nếu chúng bằng nhau thì số đó là số mạnh; nếu không thì số không phải là số mạnh.

Thuật toán

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

Ví dụ

#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;
}

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Yes it is a strong number