数的超阶乘

给定一个数,任务是找到一个数的超阶乘。 将给定数目的连续整数从1乘以给定数的结果,每一个整数都被提升到其自身的幂,称为 超因子 一个数字。

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

例如:

输入: 2. 输出: 4.

输入: 4. 输出: 27648 H(4)=1^1*2^2*3^3*4^4=27648

A. 幼稚的方法 使用两个循环,一个求i^i的和,另一个求i^i。但时间复杂度为O(n 2. ). 一 有效的方法 就是使用内置的 战俘() 功能或 O(logn)方法 找到i^i,然后添加它。 以下是上述方法的实施情况。

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

时间复杂性: O(N*logn) 由于数字的超因子可能是巨大的,因此数字将溢出。我们可以使用 C++中的库 Java中的BigInteger 存储数字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

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享