给定整数N ,任务是检查N是否除以其数字的阶乘和。
例子:
Input: N = 19
Output: Yes
1! + 9! = 1 + 362880 = 362881 which is divisible by 19.
Input: N = 20
Output: No
0! + 2! = 1 + 4 = 5 which is not divisible by 20.
方法:首先,将0到9的所有数字的阶乘存储在数组中。并且,对于给定的数字N,检查是否将其数字的阶乘之和相除。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function that returns true if n divides
// the sum of the factorials of its digits
bool isPossible(int n)
{
// To store factorials of digits
int fac[10];
fac[0] = fac[1] = 1;
for (int i = 2; i < 10; i++)
fac[i] = fac[i - 1] * i;
// To store sum of the factorials
// of the digits
int sum = 0;
// Store copy of the given number
int x = n;
// Store sum of the factorials
// of the digits
while (x) {
sum += fac[x % 10];
x /= 10;
}
// If it is divisible
if (sum % n == 0)
return true;
return false;
}
// Driver code
int main()
{
int n = 19;
if (isPossible(n))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function that returns true if n divides
// the sum of the factorials of its digits
static boolean isPossible(int n)
{
// To store factorials of digits
int fac[] = new int[10];
fac[0] = fac[1] = 1;
for (int i = 2; i < 10; i++)
fac[i] = fac[i - 1] * i;
// To store sum of the factorials
// of the digits
int sum = 0;
// Store copy of the given number
int x = n;
// Store sum of the factorials
// of the digits
while (x != 0)
{
sum += fac[x % 10];
x /= 10;
}
// If it is divisible
if (sum % n == 0)
return true;
return false;
}
// Driver code
public static void main (String[] args)
{
int n = 19;
if (isPossible(n))
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by Ryuga
Python3
# Python 3 implementation of the approach
# Function that returns true if n divides
# the sum of the factorials of its digits
def isPossible(n):
# To store factorials of digits
fac = [0 for i in range(10)]
fac[0] = 1
fac[1] = 1
for i in range(2, 10, 1):
fac[i] = fac[i - 1] * i
# To store sum of the factorials
# of the digits
sum = 0
# Store copy of the given number
x = n
# Store sum of the factorials
# of the digits
while (x):
sum += fac[x % 10]
x = int(x / 10)
# If it is divisible
if (sum % n == 0):
return True
return False
# Driver code
if __name__ == '__main__':
n = 19
if (isPossible(n)):
print("Yes")
else:
print("No")
# This code is contributed by
# Surendra_Gangwar
C#
// C# implementation of the approach
using System;
class GFG
{
// Function that returns true if n divides
// the sum of the factorials of its digits
static bool isPossible(int n)
{
// To store factorials of digits
int[] fac = new int[10];
fac[0] = fac[1] = 1;
for (int i = 2; i < 10; i++)
fac[i] = fac[i - 1] * i;
// To store sum of the factorials
// of the digits
int sum = 0;
// Store copy of the given number
int x = n;
// Store sum of the factorials
// of the digits
while (x != 0)
{
sum += fac[x % 10];
x /= 10;
}
// If it is divisible
if (sum % n == 0)
return true;
return false;
}
// Driver code
public static void Main ()
{
int n = 19;
if (isPossible(n))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by Code_Mech.
PHP
输出:
Yes