给定一个数,任务是找到一个数的超阶乘。 将给定数目的连续整数从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