進擊吧!階乘(高精度)

2021-10-18 17:36:45 字數 900 閱讀 9325

在寫這一道題的過程中我發現了乙個有趣的現象,就是下面的兩種寫法本質上是相同的,但為什麼第一種做法正確,而第二種做法錯誤呢?我仔細想想,n是0<=n<=10000,所以我感覺第二種做法中當最後一次for迴圈結束時所得的 t 可能是非常大的數,有可能會超過int的範圍,所以可能不能直接push_back()到陣列中,所以我們採用第一種寫法較為穩妥。

題目描述

給定乙個整數n(0≤n≤10000),求取n的階乘

輸入描述:

多個測試資料,每個測試資料輸入乙個數n

輸出描述:

每組用一行輸出n的階乘

示例1輸入12

3輸出12

6正確寫法:

#include

using

namespace std;

vector<

int>

mul(vector<

int> a,

int b)

return c;

}int

main

(void

)return0;

}

錯誤寫法:

#include

using

namespace std;

vector<

int>

mul(vector<

int> a,

int b)

if(t) c.

push_back

(t);

return c;

}int

main

(void

)return0;

}

高精度階乘

問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相...

高精度階乘

問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...

進擊吧!階乘 大數乘法

題目描述 給定乙個整數n 0 n 10000 求取n的階乘 輸入描述 多個測試資料,每個測試資料輸入乙個數n 輸出描述 每組用一行輸出n的階乘 輸入 12 3輸出 1 26思路 剛看到時我以為是打表,但是看到n的最大值後就放棄了這種想法。然後就想到了大數乘法,由於以前只寫過大數加,所以比賽時一時沒有...