0
点赞
收藏
分享

微信扫一扫

高精度阶乘

分析:被乘数每一位都需要乘上乘数

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]);
        }
    }
}
举报

相关推荐

0 条评论