Comprobar si N-factorial es divisible por X^Y

Dados tres enteros N, X e Y, la tarea es comprobar que si N! es divisible por X Y
Ejemplos: 
 

Entrada: N = 10, X = 2, Y = 8 
Salida: SÍ 
Explicación: 
El factorial de 10 es – 3628800 
y el valor de X Y = 2 8 = 256 
Dado que 3628800 es divisible por 256, la respuesta es SÍ.
Entrada: N = 5, X = 2, Y = 4 
Salida: NO 
Explicación: 
El Factorial de 5 es – 120 
y el valor de X Y = 2 4 = 16 
Ya que, 3628800 no es divisible por 16, por lo tanto la respuesta es NO. 
 

Enfoque: La idea es encontrar el valor de N-factorial y X Y por separado y luego verificar si el valor de N-factorial es divisible X Y .
Algoritmo: 
 

Nota : este enfoque no funciona para valores grandes de N.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// CPP implementation to check if
// the value of the N! % X^Y == 0
#include<bits/stdc++.h>
using namespace std;
 
     
    // Function to check if N! % X^Y == 0
    void check(int n,int x, int y){
        int fact = 1;
         
        // Loop to calculate N-factorial
        for (int i = 2; i <= n; i++) {
            fact *= i;
        }
 
        int divisor = pow(x, y);
         
        // Condition to check
        if (fact % divisor == 0)
            cout << "YES";
        else
            cout << "NO";
         
    }
     
    // Driver Code
        int main()
    {
        int n = 10;
        int x = 2;
        int y = 8;
         
        // Function Call
        check(n, x, y);
    }
 
// This code is contributed by Surendra_Gangwar

Java

// Java implementation to check if
// the value of the N! % X^Y == 0
import java.util.*;
import java.lang.*;
 
class divisible {
     
    // Function to check if N! % X^Y == 0
    public static void check(int n,
                         int x, int y){
        long fact = 1;
         
        // Loop to calculate N-factorial
        for (int i = 2; i <= n; i++) {
            fact *= i;
        }
 
        long divisor = (long)Math.pow(x, y);
         
        // Condition to check
        if (fact % divisor == 0)
            System.out.println("YES");
        else
            System.out.println("NO");
         
    }
     
    // Driver Code
    public static void main(String args[])
    {
        int n = 10;
        int x = 2;
        int y = 8;
         
        // Function Call
        check(n, x, y);
    }
}

Python3

# Python3 implementation to check if
# the value of the N! % X^Y == 0
     
# Function to check if N! % X^Y == 0
def check(n, x, y) :
    fact = 1;
     
    # Loop to calculate N-factorial
    for i in range(2, n + 1) :
        fact *= i;
    divisor = x ** y;
         
    # Condition to check
    if (fact % divisor == 0) :
        print("YES");
    else :
        print("NO");
 
# Driver Code
if __name__ == "__main__" :
     
    n = 10;
    x = 2;
    y = 8;
         
    # Function Call
    check(n, x, y);
 
# This code is contributed by Yash_R

C#

// C# implementation to check if
// the value of the N! % X^Y == 0
using System;
 
class divisible {
      
    // Function to check if N! % X^Y == 0
    public static void check(int n,
                         int x, int y){
        long fact = 1;
          
        // Loop to calculate N-factorial
        for (int i = 2; i <= n; i++) {
            fact *= i;
        }
  
        long divisor = (long)Math.Pow(x, y);
          
        // Condition to check
        if (fact % divisor == 0)
            Console.WriteLine("YES");
        else
            Console.WriteLine("NO");
          
    }
      
    // Driver Code
    public static void Main(String []args)
    {
        int n = 10;
        int x = 2;
        int y = 8;
          
        // Function Call
        check(n, x, y);
    }
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript implementation to check if
// the value of the N! % X^Y == 0
 
function check(n,x,y)
{
        var fact = 1;
         
        // Loop to calculate N-factorial
        for (var i = 2; i <= n; i++) {
            fact *= i;
        }
 
        var divisor = Math.pow(x, y);
         
        // Condition to check
        if (fact % divisor === 0)
            document.write("YES");
        else
            document.write("NO");
         
    }
     
        var n = 10;
        var x = 2;
        var y = 8;
         
        // Function Call
        check(n, x, y);
 
 
</script>

PHP

<?php
// php implementation to check if
// the value of the N! % X^Y == 0
 
function check($n,$x,$y)
{
        $fact = 1;
         
        // Loop to calculate N-factorial
        for ($i = 2; $i <= $n; $i++) {
            $fact *= $i;
        }
 
        $divisor = pow($x, $y);
         
        // Condition to check
        if ($fact % $divisor === 0)
            echo("YES");
        else
            echo("NO");
         
    }
     
        $n = 10;
        $x = 2;
        $y = 8;
         
        // Function Call
        check($n, $x, $y);
         
        // This code is contributed by _saurabh_jaiswal
?>

Producción: 

YES

Análisis de rendimiento: 
 

  • Complejidad de tiempo: O(N)
  • Espacio Auxiliar: O(1).

Publicación traducida automáticamente

Artículo escrito por ARNABMUKHERJEE6 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *