Wednesday, November 27, 2024
Google search engine
HomeData Modelling & AIHyperfactorial of a number

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 :
Output : 4

Input :
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 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>


Output: 

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 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 
 
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
 
# 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>


Output: 

86400000

 

Time Complexity: O(N2), where N is the given number.
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments