题目链接:HDOJ 1042\
题意:求最大到10000的阶乘。
题解:可想而知,n到10000时这个答案太大,所以必须要高精度;
AC code:(java)
//package adruill;
import java.util.Scanner;
public class Main {
public static void main(String[] agrs){
Scanner in = new Scanner(System.in);
int maxn = 40005;//10000的阶乘也不超40000位预开数组
int a[] = new int[maxn];
while(in.hasNext()){
for(int i = 0; i < maxn; i++)
a[i] = 0;
a[0] = 1;
int t = in.nextInt();
for(int i = 2; i <= t; i++){ //高精度
for(int j = 0; j < maxn; j++)
{
if(a[j] == 0)
continue;
a[j] *= i;
}
for(int j = 0; j < maxn - 1; j++)
{
if(a[j] == 0)
continue;
a[j + 1] += a[j] / 10;
a[j] %= 10;
}
}
int k = maxn - 1;
while(a[k] == 0) //去前导0
k--;
for(int i = k; i >= 0; i--)
System.out.print(a[i]);
System.out.println();
}
in.close();
}
}