Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
第一次写了一个在while外面的数组就直接存好了范围内每个数的阶乘但是wa了
然后就换了一个方法
AC代码1
import java.io.BufferedInputStream;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
int n;
// BigInteger a[] = new BigInteger[10010];
// a[0] = BigInteger.valueOf(1);
// for(int i = 1; i <= 10000; i++)
// {
// a[i] = a[i-1].multiply(BigInteger.valueOf(i));
// }
while(in.hasNext())
{
n = in.nextInt();
BigDecimal ans = fun(n);
System.out.println(ans);
}
}
public static BigDecimal fun(int n)
{
BigDecimal ans = BigDecimal.valueOf(1);
for(int i = 1; i <= n; i++)
{
ans = ans.multiply(BigDecimal.valueOf(i));
}
return ans;
}
}
emmmmmm又交了一次
第一个方法就把BigInteger改成BigDecimal就OK了
AC代码2
import java.io.BufferedInputStream;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
int n;
BigDecimal a[] = new BigDecimal[10010];
a[0] = BigDecimal.valueOf(1);
for(int i = 1; i <= 10000; i++)
{
a[i] = a[i-1].multiply(BigDecimal.valueOf(i));
}
while(in.hasNext())
{
n = in.nextInt();
//BigDecimal ans = fun(n);
BigDecimal ans = a[n];
System.out.println(ans);
}
}
}