Hyperfactorial of a number

Given a number, the task is to find the hyperfactorial of a number.
The result of multiplying a given number of consecutive integers from 1 to the given number, each raised to its own power is called hyperfactorial of a number.
H(n)= 1 ^ 1 * 2 ^ 2 * 3 ^ 3 * . . . . . * n ^ n
Examples:
Input : 2
Output : 4Input : 4
Output : 27648
H(4) = 1^1 * 2^2 * 3^3 * 4^4 = 27648
A naive approach is using two loops, one to find the summation of i^i and the other to find i^i. But the time complexity will be O(n2).
An efficient approach is to use the inbuilt pow() function or O(log n) method to find i^i and then add it.
Below is the implementation of the above approach.
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 hyperfactorialll 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 codeint 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 hyperfactorialclass 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 codepublic 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 hyperfactorialdef 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 codenum = 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 hyperfactorialstatic 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 codepublic 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 hyperfactorialfunction 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 hyperfactorialfunction 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 codelet num = 5;document.write(boost_hyperfactorial(num));// This code is contributed// by gfgking</script> |
86400000
Time complexity:O(N * log N)
Auxiliary Space: O(1)
Since hyper-factorials of numbers can be huge, hence the numbers will overflow. We can use boost libraries in C++ or BigInteger in Java to store the hyper-factorial of a number 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 hyperfactorialint1024_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 codeint main(){ int num = 5; cout << boost_hyperfactorial(num); return 0;} |
Java
// Java program to find the hyperfactorial // of a number import java.io.*;class GFG {// function to calculate the value of hyperfactorialstatic 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 # 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 hyperfactorialstatic 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 codepublic 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 hyperfactorialfunction 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 hyperfactorialfunction 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 codevar num = 5;document.write( boost_hyperfactorial(num));</script> |
86400000
Time Complexity: O(N2), where N is the given number.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



