You can see the practice problems list and select a problem from there. Then, you need to select the language from tabs and write your code in the editor. You can compile and test your code on sample testcases by clicking on 'Compile & Test'. You can submit your code for judge by clicking on 'Submit'. You can refer to Judge Environment for further details.
We will describe solutions for Small Factorials in different languages for successful submission.
Small Factorials
You are asked to calculate factorials of some small positive integers.
Input
An integer T, denoting the number of testcases, followed by T lines, each containing a single integer N.
Output
For each integer N given at input, output a single line the value of N!
Input Constraint
1 <= T <= 100
1 <= N <= 100
Solutions in different languages for Small Factorials are written below.
C
#include <stdio.h>
int main()
{
int kases;
scanf("%d", &kases);
int kase;
for(kase = 1; kase <= kases; kase++) {
int N;
scanf("%d", &N);
int result[1000];
result[0] = 1;
int length = 1, i, j, temp, carry = 0;
for(i = 2; i <= N; i++) {
for(j = 0; j < length; j++) {
temp = carry + result[j] * i;
carry = temp / 10;
result[j] = temp % 10;
}
while(carry) {
result[j] = carry % 10;
carry /= 10;
j++;
}
length = j;
}
for(int i = length - 1; i >= 0; i--){
printf("%d", result[i]);
}
printf("\n");
}
return 0;
}
C++
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int kases;
cin >> kases;
int kase;
for(kase = 1; kase <= kases; kase++) {
int N;
cin >> N;
vector result;
result.push_back(1);
int temp, carry = 0;
for(int i = 2; i <= N; i++) {
for(int j = 0; j < result.size(); j++) {
temp = carry + result[j] * i;
carry = temp / 10;
result[j] = temp % 10;
}
while(carry) {
result.push_back(carry % 10);
carry /= 10;
}
}
for(int i = result.size() - 1; i >= 0; i--){
cout << result[i];
}
cout << endl;
}
return 0;
}
Clojure
(defn parse-int [s]
(Integer. (re-find #"\d+" s )))
(defn fact
([n acc] (if (< n 2) acc (recur (dec n) (* acc n))))
([n] (fact n 1)))
(defmacro for-loop [[sym init check change :as params] & steps]
`(loop [~sym ~init value# nil]
(if ~check
(let [new-value# (do ~@steps)]
(recur ~change new-value#))
value#)))
(let [kases (parse-int (read-line))]
(for-loop [i 0 (< i kases) (inc i)]
(println (fact (parse-int (read-line))))))
C#
using System;
using System.Collections.Generic;
class MyClass {
static void Main(string[] args) {
int kases = Int32.Parse( System.Console.ReadLine().Trim());
for (int kase = 1; kase <= kases; kase++) {
int N = Int32.Parse( System.Console.ReadLine().Trim());
List<int> result = new List<int>();
result.Add(1);
int temp, carry = 0;
for(int i = 2; i <= N; i++) {
for(int j = 0; j < result.Count; j++) {
temp = carry + result[j] * i;
carry = temp / 10;
result[j] = temp % 10;
}
while(carry > 0) {
result.Add(carry % 10);
carry /= 10;
}
}
for(int i = result.Count - 1; i >= 0; i--){
Console.Write(result[i]);
}
Console.Write("\n");
}
}
}
Go
package main
import (
"fmt"
)
func Factorial(n uint64)(result uint64) {
if (n > 0) {
result = n * Factorial(n-1)
return result
}
return 1
}
func main() {
var no_of_test_cases int
var num uint64
fmt.Scanf("%d",&no_of_test_cases)
var answer = make([]uint64,no_of_test_cases)
for i := 0; i < no_of_test_cases; i++ {
fmt.Scanf("%d",&num)
answer[i] = Factorial(num)
}
for i := 0; i < no_of_test_cases; i++ {
fmt.Println(answer[i])
}
}
Haskell
module Main
where
factorial 1 = 1
factorial n = n * factorial (n - 1)
f xs = concat $ map (\x -> show x ++ "\n") $ map factorial $ map (\x -> read x :: Integer) $ words xs
main = do
getLine
interact f
Java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
class TestClass {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int N = Integer.parseInt(line);
ArrayList<Integer> inputs = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
inputs.add(Integer.valueOf(br.readLine()));
}
ArrayList<BigInteger> outputs = new ArrayList<BigInteger>();
for(Integer input : inputs){
outputs.add(factorial(input));
}
for(BigInteger result: outputs){
System.out.println(result);
}
}
private static BigInteger factorial(Integer input) {
if(input == 1) return BigInteger.ONE;
return factorial(input - 1).multiply(new BigInteger(String.valueOf(input)));
}
}
Java 8
import java.util.stream.LongStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
public class HelloWorld{
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int N = Integer.parseInt(line);
ArrayList<Integer> inputs = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
inputs.add(Integer.valueOf(br.readLine()));
}
ArrayList<BigInteger> outputs = new ArrayList<BigInteger>();
for(Integer input : inputs){
outputs.add(factorial(input));
}
for(BigInteger result: outputs){
System.out.println(result);
}
}
private static BigInteger factorial(Integer input) {
if(input == 1) return BigInteger.ONE;
return factorial(input - 1).multiply(new BigInteger(String.valueOf(input)));
}
}
JavaScript (Rhino)
// Equivalent in effect to the Java declaration import java.io.*;
importPackage(java.io);
importPackage(java.lang);
importPackage(java.math);
importPackage(java.util);
var sc = new Scanner(System['in']);
var kases = sc.nextInt();
for(var kase = 1; kase <= kases; kase++) {
var t = sc.nextInt();
var bi=BigInteger.valueOf(1);
for(var i=1; i<=t; i++)
{
bi = bi.multiply(BigInteger.valueOf(i));
}
System.out.println(bi);
}
Javascript (Node.js)
process.stdin.resume();
process.stdin.setEncoding('utf-8');
var input_ = "";
process.stdin.on('data', function (data) {
input_ += data.toString().trim();
input_ += '\n';
});
function Factorial(N) {
var Fact = 1;
for(var i=1;i<=N;i++){
Fact = Fact * i;
}
return Fact;
}
process.stdin.on('end', function () {
input_ = input_.replace(/\n$/, "");
input_ = input_.split("\n");
var idx_ = 0;
var T = parseInt(input_[idx_++].trim(), 10);
for(var t_i = 0; t_i < T; t_i++) {
var N = parseInt(input_[idx_++].trim(), 10);
var out_ = Factorial( N);
process.stdout.write(out_.toString());
process.stdout.write('\n');
}
process.exit();
});
Kotlin
import java.math.BigInteger
fun main(args: Array<String>){
var t=readLine()!!.toInt()
while(t-->0){
var x=readLine()!!.toInt()
println(factorial(x))
}
}
fun factorial(x: Int): BigInteger{
var ans=BigInteger.ONE
for(i in 2..x) ans=ans.multiply(BigInteger.valueOf(i.toLong()))
return ans
}
Lisp (sbcl)
(defun factorial (n)
(if (eq n 1) 1
(* (factorial (- n 1)) n)))
(defun main ()
(setq N (parse-integer (read-line)))
(loop
(setq N (- N 1))
(write (factorial (parse-integer (read-line))))
(terpri)
(when (eql N 0) (return))))
(main)
Lua
function factorial(n)
if (n == 0) then
return 1
else
return n * factorial(n - 1)
end
end
no_of_test_cases = io.read()
answers = {}
for i=0,no_of_test_cases-1,1
do
answers[i] = factorial(io.read())
end
for i=0,no_of_test_cases-1,1
do
io.write(answers[i])
io.write('\n')
end
Objective-C
#import <stdio.h>
@interface Factorial
{
}
-(int) f:(int)x;
@end
@implementation Factorial
-(int) f:(int)x {
int N = x;
int result[1000];
result[0] = 1;
int length = 1, i, j, temp, carry = 0;
for(i = 2; i <= N; i++) {
for(j = 0; j < length; j++) {
temp = carry + result[j] * i;
carry = temp / 10;
result[j] = temp % 10;
}
while(carry) {
result[j] = carry % 10;
carry /= 10;
j++;
}
length = j;
}
for(int i = length - 1; i >= 0; i--){
printf("%d", result[i]);
}
printf("\n");
return 0;
}
@end
int main()
{
int kases;
scanf("%d", &kases);
int kase;
for(kase = 1; kase <= kases; kase++) {
int N;
scanf("%d", &N);
[Factorial f:N];
}
return 0;
}
Perl
use bignum;
my $t = ;
my $f;
my @arr;
my $prod=1;
for my $i (1..100)
{
$prod=$prod*$i;
$arr[$i]=$prod;
}
$arr[0]=0;
while($t--)
{
$f=;
print $arr[$f],"\n";
}
PHP
<?php
$save_factorial=array();
function factorial($n)
{
global $save_factorial;
if($n==1||$n==0)
return 1;
if(isset($save_factorial[$n]))
return $save_factorial[$n];
$save_factorial[$n]=bcmul($n,factorial($n-1));
return $save_factorial[$n];
}
$t=trim(fgets(STDIN));
for($k=1;$k<=$t;$k++)
{
$i=trim(fgets(STDIN));
echo factorial($i)."\n";
}
?>
Python
kases = int(raw_input())
for kase in range(kases):
N = int(raw_input())
result = 1
for i in range(1, N + 1):
result = result * i
print result
R
factorial <- function(n) {
f = 1
for (i in 2:n) f <- f * i
f
}
factorial(6)
Ruby
i = gets.chomp
a = Array.new
i.to_i.times do
a << gets.chomp.to_i
end
a.each do |element|
fact = 1
for i in 1..element
fact = fact * i
end
puts fact
end
Rust
fn factorial_recursive (n: u64) -> u64 {
match n {
0 => 1,
_ => n * factorial_recursive(n-1)
}
}
fn factorial_iterative(n: u64) -> u64 {
(1..n+1).fold(1, |p, n| p*n)
}
fn main () {
for i in 1..10 {
println!("{}", factorial_recursive(i))
}
for i in 1..10 {
println!("{}", factorial_iterative(i))
}
}
Swift
func factorial(number: Int) -> (Int) {
if (number <= 1) {
return 1
}
return number * factorial(number - 1)
}
var test_cases:Int = Int(readLine()!)!
var answer_array = [Int]()
for item in 1...test_cases {
let num = Int(readLine()!)!
let answer = factorial(num)
answer_array.append(answer)
}
for item in answer_array {
print(item)
}