The factorial of the integer n, written n!, is defined as:
Calculate and print the factorial of a given integer.
For example, if n=30, we calculate 30*29*28*….*2*1 and get .
Function Description
Complete the extraLongFactorials function in the editor below. It should print the result and return.
extraLongFactorials has the following parameter(s):
n: an integer
Note: Factorials of n>20 can’t be stored even in a 64-bit long long variable. Big integers must be used for such calculations. Languages like Java, Python, Ruby etc. can handle big integers, but we need to write additional code in C/C++ to handle huge values.
We recommend solving this challenge using BigIntegers.
Input Format
Input consists of a single integer n
Constraints
1<=n<=100
Output Format
Print the factorial of n.
Sample Input
25
Extra Long Factorials HackerRank Solution in C
#include<stdio.h> int main() { int t; int a[200]; //array will have the capacity to store 200 digits. int n,i,j,temp,m,x; // scanf("%d",&t); // while(t--) //{ scanf("%d",&n); a[0]=1; //initializes array with only 1 digit, the digit 1. m=1; // initializes digit counter temp = 0; //Initializes carry variable to 0. for(i=1;i<=n;i++) { for(j=0;j<m;j++) { x = a[j]*i+temp; //x contains the digit by digit product a[j]=x%10; //Contains the digit to store in position j temp = x/10; //Contains the carry value that will be stored on later indexes } while(temp>0) //while loop that will store the carry value on array. { a[m]=temp%10; temp = temp/10; m++; // increments digit counter } } for(i=m-1;i>=0;i--) //printing answer printf("%d",a[i]); printf("\n"); //} return 0; }
Extra Long Factorials HackerRank Solution in C++
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; string multiply(string &num1, string num2) { string res; int a, b, c, m, n, l, k, sum, carry; char d; m = num1.size() - 1; n = num2.size() - 1; carry = 0; for (int i = m; i >= 0; i--) { for (int j = n; j >= 0; j--) { l = res.size() - 1; a = num1[i] - '0'; b = num2[j] - '0'; k = (m-i) + (n-j); if (l >= k) c = res[l-k] - '0'; else c = 0; sum = a * b + c + carry; carry = sum / 10; d = char(sum % 10 + '0'); if (l >= k) res[l-k] = d; else res.insert(0, &d, 1); if (j == 0 && carry) { d = char(carry + '0'); res.insert(0, &d, 1); carry = 0; } } } return res[0] == '0' ? "0" : res; } int main() { Scanner sc=new Scanner(System.in); System.out.println(factorial(sc.nextInt())); } }
Extra Long Factorials HackerRank Solution in Python
# Enter your code here. Read input from STDIN. Print output to STDOUT t = input() num = 1 while t>0: num=num*t t=t-1 print num
Extra Long Factorials HackerRank Solution in C#
using System; using System.Collections.Generic; using System.IO; using System.Numerics; class Solution { static void Main(String[] args) { BigInteger Sum = new BigInteger(); int Factorial = Convert.ToInt32(Console.ReadLine()); Sum = 1; for (int i = 1; i < Factorial + 1; i++) { Sum *= i; } Console.WriteLine(Sum); Console.ReadLine(); } }
Attempt Extra Long Factorials HackerRank Challenge
Link – https://www.hackerrank.com/challenges/extra-long-factorials/
Next HackerRank Challenge Solution
Link – https://exploringbits.com/sherlock-and-squares-hackerrank-solution/
Aayush Kumar Gupta is the founder and creator of ExploringBits, a website dedicated to providing useful content for people passionate about Engineering and Technology. Aayush has completed his Bachelor of Technology (Computer Science & Engineering) from 2018-2022. From July 2022, Aayush has been working as a full-time Devops Engineer.