public class 阶乘 {
/* 延伸到求1000以内的数的阶乘。
* 对于很大数的阶乘结果会很大造成存储的溢出。
* 考虑到用数组存储:
* 使用一个数组arr来表示一个大整数A,arr[0]表示A的个位,arr[1]表示A的十位,依次类推。
* A乘以某一数K转化成A的每一位都乘以k,并且处理相应的位数 。
* */
final int MAX=100000;
void Mul(int n){
int i=0,j=0;
int s;
int c=0;//进位
int []arr=new int[MAX];
arr[0]=1;
for(i=2;i<=n;i++)
{
for(j=0;j<MAX;j++)
{
s=arr[j]*i+c;
arr[j]=s%10;
c=s/10;
}
}
for(i=MAX-1;i>=0;i--)
{
if(arr[i]!=0)
break;
}
for(j=i;j>=0;j--)
{
System.out.print(arr[j]);
}
}
}