Given a positive integer N, the task is to print the Exponential factorial of N. Since the output can be very large, print the answer modulus 1000000007.
Examples:
Input: N = 4
Output: 262144Input: N = 3
Output: 9
Approach: The given problem can be solved based on the following observations:
The exponential factorial is defined by the recurrence relation:
.
Follow the steps below to solve the problem:
- Initialize a variable say res as 1 to store the exponential factorial of N.
- Iterate over the range [2, N] using the variable i and in each iteration update the res as res = ires%1000000007.
- Finally, after completing the above step, print the answer obtained in res.
Below is the implementation of the above approach:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to find exponential factorial // of a given number int ExpoFactorial( int N)
{ // Stores the exponential factor of N
int res = 1;
int mod = 1000000007;
// Iterate over the range [2, N]
for ( int i = 2; i < N + 1; i++)
// Update res
res = ( int ) pow (i, res) % mod;
// Return res
return res;
} // Driver Code int main()
{ // Input
int N = 4;
// Function call
cout << (ExpoFactorial(N));
// This code is contributed by Potta Lokesh
return 0;
} // This code is contributed by lokesh potta |
Java
// Java program for the above approach import java.io.*;
class GFG{
// Function to find exponential factorial // of a given number static int ExpoFactorial( int N)
{ // Stores the exponential factor of N
int res = 1 ;
int mod = 1000000007 ;
// Iterate over the range [2, N]
for ( int i = 2 ; i < N + 1 ; i++)
// Update res
res = ( int )Math.pow(i, res) % mod;
// Return res
return res;
} // Driver code public static void main(String[] args)
{ // Input
int N = 4 ;
// Function call
System.out.println((ExpoFactorial(N)));
} } // This code is contributed by abhinavjain194 |
Python3
# Python3 program for the above approach # Function to find exponential factorial # of a given number def ExpoFactorial(N):
# Stores the exponential factor of N
res = 1
mod = ( int )( 1000000007 )
# Iterate over the range [2, N]
for i in range ( 2 , N + 1 ):
# Update res
res = pow (i, res, mod)
# Return res
return res
# Driver Code # Input N = 4
# Function call print (ExpoFactorial(N))
|
C#
// C# program for the above approach using System;
class GFG{
// Function to find exponential factorial // of a given number static int ExpoFactorial( int N)
{ // Stores the exponential factor of N
int res = 1;
int mod = 1000000007;
// Iterate over the range [2, N]
for ( int i = 2; i < N + 1; i++)
// Update res
res = ( int )Math.Pow(i, res) % mod;
// Return res
return res;
} // Driver Code public static void Main()
{ // Input
int N = 4;
// Function call
Console.Write(ExpoFactorial(N));
} } // This code is contributed by sanjoy_62. |
Javascript
<script> // JavaScript program for the above approach // Function to find exponential factorial // of a given number function ExpoFactorial(N) {
// Stores the exponential factor of N
let res = 1;
let mod = 1000000007;
// Iterate over the range [2, N]
for (let i = 2; i < N + 1; i++)
// Update res
res = Math.pow(i, res) % mod;
// Return res
return res;
} // Driver Code // Input let N = 4; // Function call document.write((ExpoFactorial(N))); // This code is contributed by _saurabh_jaiswal </script> |
Output
262144
Time Complexity: O(N*log(N))
Auxiliary Space: O(1)