Hiperfactorial de un número

Dado un número, la tarea es encontrar el hiperfactorial de un número.
El resultado de multiplicar un número dado de enteros consecutivos del 1 al número dado, cada uno elevado a su propia potencia, se llama hiperfactorial de un número.

H(n)= 1 ^ 1 * 2 ^ 2 * 3 ^ 3 * . . . . . * n ^ n

Ejemplos: 

Entrada:
Salida: 4

Entrada:
Salida: 27648 
H(4) = 1^1 * 2^2 * 3^3 * 4^4 = 27648 

Un enfoque ingenuo es usar dos bucles, uno para encontrar la suma de i^i y el otro para encontrar i^i. Pero la complejidad temporal será O(n 2 ). 
Un enfoque eficiente es usar la función pow() incorporada o el método O(log n) para encontrar i^i y luego agregarlo. 
A continuación se muestra la implementación del enfoque anterior. 

C++

/// C++ program to find the hyperfactorial
// of a number
#include <bits/stdc++.h>
 
using namespace std;
#define ll long long
 
// function to calculate the value of hyperfactorial
ll boost_hyperfactorial(ll num)
{
    // initialise the val to 1
    ll val = 1;
    for (int i = 1; i <= num; i++) {
        val = val * pow(i,i);
    }
    // returns the hyperfactorial of a number
    return val;
}
 
// Driver code
int main()
{
    int num = 5;
    cout << boost_hyperfactorial(num);
    return 0;
}

Java

// Java program to find the
// hyperfactorial of a number
 
// function to calculate the
// value of hyperfactorial
class GFG
{
static long boost_hyperfactorial(long num)
{
    // initialise the val to 1
    long val = 1;
    for (int i = 1; i <= num; i++)
    {
        val = val * (long)Math.pow(i, i);
    }
     
    // returns the hyperfactorial
    // of a number
    return val;
}
 
// Driver code
public static void main(String args[])
{
    int num = 5;
    System.out.println(boost_hyperfactorial(num));
}
}
 
// This code is contributed
// by chandan_jnu

Python3

# Python3 program to find the
# hyperfactorial of a number
 
# function to calculate the
# value of hyperfactorial
def boost_hyperfactorial(num):
 
    # initialise the
    # val to 1
    val = 1;
    for i in range(1, num + 1):
        val = val * pow(i, i);
     
    # returns the hyperfactorial
    # of a number
    return val;
 
# Driver code
num = 5;
print(boost_hyperfactorial(num));
 
# This code is contributed
# by mits

C#

// C# program to find the
// hyperfactorial of a number
using System;
 
class GFG
{
 
// function to calculate the
// value of hyperfactorial
static long boost_hyperfactorial(long num)
{
    // initialise the val to 1
    long val = 1;
    for (long i = 1; i <= num; i++)
    {
        val = val * (long)Math.Pow(i, i);
    }
     
    // returns the hyperfactorial
    // of a number
    return val;
}
 
// Driver code
public static void Main()
{
    int num = 5;
    Console.WriteLine(boost_hyperfactorial(num));
}
}
 
// This code is contributed
// by chandan_jnu

PHP

<?php
// PHP program to find the
// hyperfactorial of a number
 
// function to calculate the
// value of hyperfactorial
function boost_hyperfactorial($num)
{
    // initialise the
    // val to 1
    $val = 1;
    for ($i = 1; $i <= $num; $i++)
    {
        $val = $val * pow($i, $i);
    }
     
    // returns the hyperfactorial
    // of a number
    return $val;
}
 
// Driver code
$num = 5;
echo boost_hyperfactorial($num);
 
// This code is contributed
// by Akanksha Rai(Abby_akku)
?>

Javascript

<script>
 
// Javascript program to find the
// hyperfactorial of a number
 
// function to calculate the
// value of hyperfactorial
function boost_hyperfactorial(num)
{
    // initialise the
    // val to 1
    let val = 1;
    for (let i = 1; i <= num; i++)
    {
        val = val * Math.pow(i, i);
    }
     
    // returns the hyperfactorial
    // of a number
    return val;
}
 
// Driver code
let num = 5;
document.write(boost_hyperfactorial(num));
 
// This code is contributed
// by gfgking
 
</script>
Producción: 

86400000

 

Complejidad temporal: O(N * log N) 
Dado que los hiperfactoriales de números pueden ser enormes, los números se desbordarán. Podemos usar bibliotecas boost en C++ o BigInteger en Java para almacenar el hiperfactorial de un número N.

C++

// C++ program to find the hyperfactorial
// of a number using boost libraries
#include <bits/stdc++.h>
#include <boost/multiprecision/cpp_int.hpp>
 
using namespace boost::multiprecision;
using namespace std;
 
// function to calculate the value of hyperfactorial
int1024_t boost_hyperfactorial(int num)
{
    // initialise the val to 1
    int1024_t val = 1;
    for (int i = 1; i <= num; i++) {
        for (int j = 1; j <= i; j++) {
            // 1^1*2^2*3^3....
            val *= i;
        }
    }
    // returns the hyperfactorial of a number
    return val;
}
 
// Driver code
int main()
{
    int num = 5;
    cout << boost_hyperfactorial(num);
    return 0;
}

Java

// Java program to find the hyperfactorial
// of a number using boost libraries
 
import java.io.*;
 
class GFG {
 
// function to calculate the value of hyperfactorial
static int boost_hyperfactorial(int num)
{
    // initialise the val to 1
    int val = 1;
    for (int i = 1; i <= num; i++) {
        for (int j = 1; j <= i; j++) {
            // 1^1*2^2*3^3....
            val *= i;
        }
    }
    // returns the hyperfactorial of a number
    return val;
}
 
// Driver code
 
 
    public static void main (String[] args) {
    int num = 5;
    System.out.println( boost_hyperfactorial(num));
    }
}
// This code is contributed
// by chandan_jnu

Python3

# Python3 program to find the hyperfactorial
# of a number using boost libraries
 
# function to calculate the value of hyperfactorial
def boost_hyperfactorial(num):
     
    # initialise the val to 1
    val = 1;
    for i in range(1,num+1):
        for j in range(1,i+1):
             
            # 1^1*2^2*3^3....
            val *= i;
             
    # returns the hyperfactorial of a number
    return val;
 
# Driver code
num = 5;
print( boost_hyperfactorial(num));
 
# This code is contributed by mits

C#

// C# program to find the hyperfactorial
// of a number using boost libraries
using System;
 
class GFG
{
 
// function to calculate the
// value of hyperfactorial
static int boost_hyperfactorial(int num)
{
    // initialise the val to 1
    int val = 1;
    for (int i = 1; i <= num; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            // 1^1*2^2*3^3....
            val *= i;
        }
    }
     
    // returns the hyperfactorial
    // of a number
    return val;
}
 
// Driver code
public static void Main ()
{
    int num = 5;
    Console.WriteLine(boost_hyperfactorial(num));
}
}
 
// This code is contributed
// by chandan_jnu

PHP

<?php
// PHP program to find the hyperfactorial
// of a number using boost libraries
 
// function to calculate the value
// of hyperfactorial
function boost_hyperfactorial($num)
{
    // initialise the val to 1
    $val = 1;
    for ($i = 1; $i <= $num; $i++)
    {
        for ($j = 1; $j <= $i; $j++)
        {
            // 1^1*2^2*3^3....
            $val *= $i;
        }
    }
     
    // returns the hyperfactorial
    // of a number
    return $val;
}
 
// Driver code
$num = 5;
echo boost_hyperfactorial($num);
 
// This code is contributed
// by Mukul Singh
?>

Javascript

<script>
 
// Javascript program to find the hyperfactorial
// of a number using boost libraries
 
// function to calculate the value of hyperfactorial
function boost_hyperfactorial(num)
{
    // initialise the val to 1
    var val = 1;
    for (var i = 1; i <= num; i++) {
        for (var j = 1; j <= i; j++) {
            // 1^1*2^2*3^3....
            val *= i;
        }
    }
    // returns the hyperfactorial of a number
    return val;
}
 
// Driver code
var num = 5;
document.write( boost_hyperfactorial(num));
 
 
</script>
Producción: 

86400000

 

Publicación traducida automáticamente

Artículo escrito por Subash23 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 *