在寫這一道題的過程中我發現了乙個有趣的現象,就是下面的兩種寫法本質上是相同的,但為什麼第一種做法正確,而第二種做法錯誤呢?我仔細想想,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的最大值後就放棄了這種想法。然後就想到了大數乘法,由於以前只寫過大數加,所以比賽時一時沒有...