1. 程式人生 > 實用技巧 >階乘計算

階乘計算

Description

輸入一個正整數n,輸出n!的值。

其中n!=123…n。

演算法描述

n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用一個數組A來表示一個大整數a,A[0]表示a的個位,A[1]表示a的十位,依次類推。

將a乘以一個整數k變為將陣列A的每一個元素都乘以k,請注意處理相應的進位。

首先將a設為1,然後乘2,乘3,當乘到n時,即得到了n!的值。

Input

輸入包含一個正整數n,n<=1000。

Output

輸出n!的準確值。

程式碼

參考https://blog.csdn.net/weixin_43906799/article/details/104751549

#include<iostream>
#include<string.h>
using namespace std;

int main() {
    int a[100000];
    memset(a, 0, sizeof(a));
    a[0] = 1;

    int n;
    cin >> n;

    int high_num = 0;

    for (int i = 2;i <= n;i++) {
        int carry = 0;
        for (int j = 0;j <= high_num;j++) {
            
int mul = i * a[j] + carry; a[j] = mul % 10; carry = mul / 10; } while (carry) { a[++high_num] = carry % 10; carry /= 10; } } for (int i = high_num;i >= 0;i--) { printf("%d", a[i]); } return 0; }