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: 2
Salida: 4Entrada: 4
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>
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>
86400000