Рубрики

Программа для проверки Сильного Номера

Сильные числа — это числа, сумма факторных цифр которых равна исходному числу. Получив номер, проверьте, является ли он сильным или нет.

Примеры:

Input  : n = 145
Output : Yes
Sum of digit factorials = 1! + 4! + 5!
                        = 1 + 24 + 120
                        = 145

Input :  n = 534
Output : No

1) Initialize sum of factorials as 0. 
2) For every digit d, do following
   a) Add d! to sum of factorials.
3) If sum factorials is same as given 
   number, return true.
4) Else return false.

Оптимизация заключается в предварительном вычислении факториалов всех чисел от 0 до 10.

C ++

// C ++ программа для проверки, является ли число
// сильный или нет.
#include <bits/stdc++.h>

using namespace std;

  

int f[10];

  
// Заполняет факториалы цифр от 0 до 9.

void preCompute()

{

    f[0] = f[1] = 1;

    for (int i = 2; i<10; ++i)

        f[i] = f[i-1] * i;

}

  
// Возвращает true, если x является сильным

bool isStrong(int x)

{

    int factSum = 0;

  

    // Пройти через все цифры х.

    int temp = x;

    while (temp)

    {

        factSum += f[temp%10];

        temp /= 10;

    }

  

    return (factSum == x);

}

  
// Код драйвера

int main()

{

    preCompute();

  

    int x = 145;

    isStrong(x) ? cout << "Yes\n" : cout << "No\n";

    x = 534;

    isStrong(x) ? cout << "Yes\n" : cout << "No\n";

    return 0;

}        

Джава

// Java программа для проверки
// Сильное число или нет

  

class CheckStrong

{

    static int f[] = new int[10];

   

    // Заполняет факториалы цифр от 0 до 9.

    static void preCompute()

    {

        f[0] = f[1] = 1;

        for (int i = 2; i<10; ++i)

            f[i] = f[i-1] * i;

    }

      

    // Возвращает true, если x является сильным

    static boolean isStrong(int x)

    {

        int factSum = 0;

       

        // Пройти через все цифры х.

        int temp = x;

        while (temp>0)

        {

            factSum += f[temp%10];

            temp /= 10;

        }

       

        return (factSum == x);

    }

      

    // основная функция

    public static void main (String[] args) 

    {   

        // вызов preCompute

        preCompute();

      

        // первый проход

        int x = 145;

        if(isStrong(x))

        {

            System.out.println("Yes");

        }

        else

            System.out.println("No");

              

        // второй проход

        x = 534;

        if(isStrong(x))

        {

            System.out.println("Yes");

        }

        else

            System.out.println("No");

    }

}

питон

# Программа Python для проверки, является ли число
# сильный или нет.

  

f = [None] * 10

  
# Заполняет факториалы цифр от 0 до 9.

def preCompute() :

    f[0] = f[1] = 1;

    for i in range(2,10) :

        f[i] = f[i-1] * i

   
# Возвращает true, если x является сильным

def isStrong(x) :

      

    factSum = 0

    # Пройдите через все цифры х.

    temp = x

    while (temp) :

        factSum = factSum + f[temp % 10]

        temp = temp / 10

  

    return (factSum == x)

      
# Код драйвера
preCompute()

x = 145

if(isStrong(x) ) :

    print "Yes" 

else

    print "No"

x = 534

if(isStrong(x)) :

    print "Yes" 

else

    print "No"

  
# Этот код предоставлен Никитой Тивари.

C #

// C # программа для проверки
// Сильное число или нет

using System;

  

class CheckStrong

{

    static int []f = new int[10];

  

    // Заполняет факториалы цифр от 0 до 9.

    static void preCompute()

    {

        f[0] = f[1] = 1;

        for (int i = 2; i < 10; ++i)

            f[i] = f[i - 1] * i;

    }

      

    // Возвращает true, если x является сильным

    static bool isStrong(int x)

    {

        int factSum = 0;

      

        // Пройти через все цифры х.

        int temp = x;

        while (temp > 0)

        {

            factSum += f[temp % 10];

            temp /= 10;

        }

      

        return (factSum == x);

    }

      

    // Код драйвера

    public static void Main () 

    

        // вызов preCompute

        preCompute();

      

        // первый проход

        int x = 145;

        if(isStrong(x))

        {

            Console.WriteLine("Yes");

        }

        else

            Console.WriteLine("No");

              

        // второй проход

        x = 534;

        if(isStrong(x))

        {

            Console.WriteLine("Yes");

        }

        else

            Console.WriteLine("No");

    }

}

  
// Этот код предоставлен Нитином Митталом.

PHP

<?php
// PHP программа для проверки номера
// сильный или нет.

  

$f[10] = array(); 

  
// Заполняет факториалы цифр
// от 0 до 9.

function preCompute() 

    global $f

    $f[0] = $f[1] = 1; 

    for ($i = 2; $i < 10; ++$i

        $f[$i] = $f[$i - 1] * $i

  
// Возвращает true, если x является сильным

function isStrong($x

    global $f

    $factSum = 0; 

  

    // Пройти через все цифры х.

    $temp = $x

    while ($temp

    

        $factSum += $f[$temp % 10]; 

        $temp = (int)$temp / 10; 

    

  

    return ($factSum == $x); 

  
// Код драйвера
preCompute(); 

$x = 145; 

  

if(isStrong(!$x))

    echo "Yes\n";

else

    echo "No\n"

$x = 534; 

if(isStrong($x))

    echo "Yes\n";

else

    echo "No\n"

      
// Этот код предоставлен jit_t
?>


Выход:

Yes
No

Эта статья предоставлена Прамодом Кумаром . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Программа для проверки Сильного Номера

0.00 (0%) 0 votes