HDU1042 N!(大数阶乘)
首先,来看一下OJ结果对比。。。。。我很伤心我没有用BigInteger。
我看了一下,有使用BigInteger的大佬,他的博客链接:HDU-1042-N!(Java大法好 && HDU大数水题)](https://blog.csdn.net/qq_16542775/article/details/46438985)
下面是我这个渣渣的白痴实现。
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.
Sample Input
1
2
3
Sample Output
1
2
6
JAVA代码实现
import java.util.Scanner;
public class N_Factorial {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int max = 40000;
while(sc.hasNextInt()){
int[] num = new int[max];
int n = sc.nextInt();
num[0] = 1;
int j=0;
for(int i=2; i<=n; i++){
int carry=0; //carry是进位
for(j=0; j<max; j++)
{
int result = num[j] * i + carry;//result是当前位乘以i加上进位的值。
num[j] = result % 10; //当前位是将乘法的结果去个位。例如:3*4=12 则该位存2
carry = result / 10; //进位数值,例如:result=45,则carry=4。
}
}
for(j=max-1; j>=0; j--)
{
if(num[j]!=0){
/*我们是倒序存储结果的,就是为了区别例如5!=120时,如果正序存储就是1200000000……。
因此,倒序存储,前置0不打印输出*/
break;
}
}
for(int k=j; k >=0;k--){
System.out.print(num[k]);
}
System.out.println();
}
}
}
叨叨
皆さん、中秋快乐哟。