In this HackerRank Extra Long Factorials problem, you have Given an integer value Calculate and print the factorial of a given integer.
Problem solution in Python programming.
def factorial(x): if x == 0: return 0 answer = 1 while x > 0: answer *= x x = x - 1 return answer if __name__ == '__main__': num = int(input()) print(factorial(num))
Problem solution in Java Programming.
import java.io.*; import java.util.*; import java.math.BigInteger; public class Solution { public static void main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ Scanner in = new Scanner(System.in); int n = in.nextInt(); BigInteger x = BigInteger.valueOf(n); n = n - 1; while(n > 0){ x = x.multiply(BigInteger.valueOf(n)); n = n-1; } System.out.println(x.toString()); } }
Problem solution in C++ programming.
#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() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int n; cin >> n; string s = "1"; for (int i = 1; i <= n; ++i) { s = multiply(s, to_string(i)); } cout << s << endl; return 0; }
Problem solution in C programming.
#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",&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]); return 0; }
Problem solution in JavaScript programming.
function processData(input) { //Enter your code here input = parseInt(input); var product = [1]; for (var i = 1; i < input + 1; i++) { product = bigMultiply(product, i); //console.log('product:' + product); } console.log(product.join("")); /* console.log("big add test"); var sum = bigAdd([], [1, 4]); console.log('sum: %s', sum); console.log("big mult test"); var product = bigMultiply([6], 4); console.log("product %s", product); */ } function bigMultiply(numArray, multiplier) { var sum = []; for (var i = 1; i <= multiplier; i++) { sum = bigAdd(sum, numArray); //console.log("sum %s, numArray %s, i $s", sum, numArray, i); } return sum; } function bigAdd(numArray1, numArray2) { var longerArray; var shorterArray; var sum = []; if (numArray1.length > numArray2.length) { longerArray = numArray1; shorterArray = numArray2; } else { longerArray = numArray2; shorterArray = numArray1; } // reverse the array orientation so that base^i start from index 0 longerArray.reverse(); shorterArray.reverse(); var carry = 0; for (var i = 0; i < longerArray.length; i++) { var a = shorterArray[i] || 0; var b = longerArray[i]; var c = a + b + carry; carry = Math.floor(c / 10); var digit = c % 10; sum.unshift(digit); } if (carry > 0) { sum.unshift(carry); } // reverse the original arrays. Dirty inefficient. longerArray.reverse(); shorterArray.reverse(); return sum; } process.stdin.resume(); process.stdin.setEncoding("ascii"); _input = ""; process.stdin.on("data", function (input) { _input += input; }); process.stdin.on("end", function () { processData(_input); });