求1000以内n的阶乘

img

当n=130 这组数据过不了,不知道为什么。找了好久没找着。
以下是代码

java

    import java.util.*;

    public class Main{
        static int len = 1;
        public static void main(String[] args ){
            Scanner in = new Scanner(System.in);
            int n = in.nextInt()    ;
            int ans[] = new int[100000];
            ans[1] = 1;
            for(int i = 1; i <= n ; i++) {
                mul(ans, i);
            }
            for(int i = len ; i >= 1 ; i--) {
                System.out.print(ans[i]);
            }
            System.out.println();
            
        }
        //  低位进位 jinwei 
        public static void up(int[] a , int i) {
            if(a[i] > 10 ) {
                a[i+1] +=  a[i]/ 10;
                a[i] %= 10;
            }
        }
        // 乘
        public static void mul(int a[], int k) {
            for(int i = 1; i <= len ;i++) {
                a[i] *= k;
            }
            for(int i = 1; i<= len-1  ;i++) {
                up(a, i);
            }
            while(a[len]>=10) {
                a[len+1] +=  a[len]/ 10;
                a[len++] %= 10;
            }
        }
        
    }

阶乘的话,int类型会不会超过最大值?要考虑一下范围问题