分析:被乘数每一位都需要乘上乘数
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int tmp[] = new int[2000];
tmp[1]=1;
int maxn=1;//记录最高位,当进位时记录最高进位
for(int i =1;i<=n;i++){//循环阶乘
for(int k=1;k<=maxn;k++){//乘法嘛,被乘数每一位都需要乘上乘数
tmp[k]*=i;
}
for(int k=1;k<=maxn;k++){//从最低位开始判断,如果需要进位就执行语句
if(tmp[k]>=10){
tmp[k+1]+=tmp[k]/10;
tmp[k]=tmp[k]%10;//很经典的进位语句
if(k+1>maxn)
maxn=k+1;
}
}
}
for(int i=maxn;i>=1;i--){
System.out.print(tmp[i]);
}
}
}