题目链接:HDU1042
用Java写方便,直接算或者打表都行,速度都差不多
Javacode:
/*
* 2017年9月20日19:27:24
* HDU1042 大数阶乘
* 用缓冲流效率基本没变
* AC
* */
import java.util.*;
import java.io.*;
import java.math.*;
public class Main {
public static void main(String []args){
//Scanner cin=new Scanner(new BufferedInputStream(System.in));
//PrintWriter cout=new PrintWriter(System.out);
Scanner cin=new Scanner(System.in);
int n;
while(cin.hasNext()){
n=cin.nextInt();
BigInteger ans=BigInteger.ONE;
for(int i=1;i<=n;i++){
ans=ans.multiply(BigInteger.valueOf(i));
}
System.out.println(ans);
}
}
}
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
BigInteger a[] = new BigInteger[10005];
a[0] = BigInteger.ONE;
for(int i = 1; i <= 10000; i++)
a[i] = a[i - 1].multiply(BigInteger.valueOf(i));
int n;
while(sca.hasNextInt()){
n = sca.nextInt();
System.out.println(a[n]);
}
}
}
本文介绍了解决HDU1042大数阶乘问题的两种方法:使用Java的BigInteger进行直接计算和预先计算并存储结果的打表法。两种方法均可高效解决问题。

325

被折叠的 条评论
为什么被折叠?



