forked from kdn251/interviews
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFiveHundredFactorial.java
More file actions
executable file
·57 lines (53 loc) · 2.31 KB
/
FiveHundredFactorial.java
File metadata and controls
executable file
·57 lines (53 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* In these days you can more and more often happen to see programs which perform some useful calculations
* being executed rather then trivial screen savers. Some of them check the system message queue
* and in case of finding it empty (for examples somebody is editing a file and stays idle for some time)
* execute its own algorithm.
* As an examples we can give programs which calculate primary numbers.
* One can also imagine a program which calculates a factorial of given numbers. In this case it is not
* the time complexity of order O(n) which makes troubles, but the memory requirements. Considering
* the fact that 500! gives 1135-digit number. No standard, neither integer nor floating, data type is
* applicable here.
* Your task is to write a programs which calculates a factorial of a given number.
* Input
* Any number of lines, each containing value n for which you should provide value of n!
* Output
* 2 lines for each input case. First should contain value n followed by character ‘!’. The second should
* contain calculated value n!.
* Assumptions:
* • Value of a number n which factorial should be calculated of does not exceed 1000 (although 500!
* is the name of the problem, 500 is a small limit).
* • Mind that visually big number of case 4 is broken after 80 characters, but this is not the case in
* the real output file.
* Sample Input
* 10
* 30
* 50
* 100
* Sample Output
* 10!
* 3628800
* 30!
* 265252859812191058636308480000000
* 50!
* 30414093201713378043612608166064768844377641568960512000000000000
* 100!
* 93326215443944152681699238856266700490715968264381621468592963895217599993229915
* 608941463976156518286253697920827223758251185210916864000000000000000000000000
*/
//https://uva.onlinejudge.org/index.php?option=onlinejudge&Itemid=99999999&page=show_problem&category=&problem=564
import java.math.BigInteger;
import java.util.Scanner;
public class FiveHundredFactorial {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
int number = input.nextInt();
BigInteger product = BigInteger.ONE;
for (int i = 2; i < number + 1; i++) {
product = product.multiply(BigInteger.valueOf(i));
}
System.out.println(number + "!\n" + product);
}
}
}