n!(n<=1000)

int fact(int n)
{
        int arr[3096] = { 1 };      // 记录答案数字
        int size = 1;               // 记录答案位数
        int carry = 0;              // 表示进位数字
        for (int i = 1; i <= n; i++)
        {
            for (int j = 0; j < size; j++) 
            {
                int temp = arr[j] * i + carry;   // 用乘数 i,算出本位乘积 假设为 24 x 5 = 120
                arr[j] = temp % 10;              // 则本位写 0,储存在 arr[0] 中
                carry = temp / 10;               // 进位写 12,储存在变量 carry 中
            }
            while (carry)
            {                
                arr[size++] = carry % 10;       // 本位写 2,储存在 arr[1] 中
                carry /= 10;                    // 进位写 1
            }
        }
        for (int i = size - 1; i >= 0; i--)    // arr[] 中储存的数字从前到后分别为个、十、百...数组逆序输出
            printf("%d", arr[i]);
}

你可能感兴趣的:(n!(n<=1000))