提交此題
資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
輸入乙個正整數n,輸出n!的值。
其中n!=1*2*3*…*n。
演算法描述
n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a[0]表示a的個位,a[1]表示a的十位,依次類推。
將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的進製。
首先將a設為1,然後乘2,乘3,當乘到n時,即得到了n!的值。
輸入格式
輸入包含乙個正整數n,n
<=1000。
輸出格式
輸出n!的準確值。
樣例輸入
樣例輸出
大數的想著直接使用python來做的,但是報名的是c++,所以只好去寫模擬去了。
使用vector來做。
手算乘法axb的話,就是a的每一位對b進行乘法運算,這個是不會爆long long的資料的(放心乘法),然後遍歷維護一下答案,該進製的進製,該模的摸,然後向前進製的話,使用vector的 insert操作,直接往前面插入資料就可以了,然後最後輸出答案。
**:
#include#include#include#include#includeusing namespace std;
const int maxn = 10005;
int main()
while(jinwei) }
for(int i=0;icout
}
大數問題 超大數(10000以內)的階乘
問題分析 很容易發現,由於n的範圍很大,一般簡單的階乘演算法肯定會溢位,因為當20 已經接近long long的上限了。下面基於上面的思想,給出此題的兩種 實現 事先製表 includeusing namespace std define n 10005 vecto ctorial n void c...
超大揹包問題
運用二進位制,折半搜尋,其實我覺得本質就是狀壓思想,列舉前一半所有情況並儲存。然後排序保障總質量越大,價值越大。這裡相當於貪心。可以證明的,如果在一堆一一對應的數裡面,只取乙個,另外乙個數越大才越有可能是最優解。這個思想大概只能用在只取乙個上面。再列舉後半部分。算出每一種列舉方式的總質量,w wi就...
N (大數階乘)
given an integer n 0 n 10000 your task is to calculate n input one n in one line,process to the end of file.output for each n,output n in one line.sam...