Под «сильным числом» в математике понимается число, равное сумме факториала его цифр. Чтобы определить, является ли число сильным числом в C++, вы можете использовать следующие методы:
Метод 1: использование цикла
#include <iostream>
int factorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * factorial(num - 1);
}
bool isStrongNumber(int number) {
int temp = number;
int sum = 0;
while (temp != 0) {
int digit = temp % 10;
sum += factorial(digit);
temp /= 10;
}
return sum == number;
}
int main() {
int number;
std::cout << "Enter a number: ";
std::cin >> number;
if (isStrongNumber(number))
std::cout << number << " is a strong number." << std::endl;
else
std::cout << number << " is not a strong number." << std::endl;
return 0;
}
Метод 2: использование рекурсии
#include <iostream>
int factorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * factorial(num - 1);
}
bool isStrongNumber(int number) {
if (number == 0)
return true;
int digit = number % 10;
int sum = factorial(digit);
return sum + isStrongNumber(number / 10);
}
int main() {
int number;
std::cout << "Enter a number: ";
std::cin >> number;
if (isStrongNumber(number))
std::cout << number << " is a strong number." << std::endl;
else
std::cout << number << " is not a strong number." << std::endl;
return 0;
}
Метод 3: использование строк
#include <iostream>
#include <string>
int factorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * factorial(num - 1);
}
bool isStrongNumber(int number) {
std::string strNumber = std::to_string(number);
int sum = 0;
for (char digit : strNumber) {
int num = digit - '0';
sum += factorial(num);
}
return sum == number;
}
int main() {
int number;
std::cout << "Enter a number: ";
std::cin >> number;
if (isStrongNumber(number))
std::cout << number << " is a strong number." << std::endl;
else
std::cout << number << " is not a strong number." << std::endl;
return 0;
}