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