#include
#include
#include
#define maxn 2000
#define maxm 2001
using
namespace std;
int fact[51]
[maxm]
;int temp[maxm]
;//階乘之和
/*本題需要注意的地方:
1。bigint * int ,小的int不必轉換為bigint。直接每一位相乘,再來調整進製
2.先算完再思考進製的事情。
3.本題不知道bigint 的長度。那麼就直接從最大的位置開始往低位遍歷。
遍歷到不是0的部分就說明到有意義的部分了。
關於一些騙分數的方法:
1。剛開始做題的時候,把maxn開的大一點,把極限輸入,得到最大需要多少位。
比如這一道題目就不需要把maxn設為2000,200就夠了
2.得到正確**之後,得到所有的解,直接打表。、
*/void
mult
(int c)
for(
int i =
1; i <= maxn; i++)}
}void
add(
int i)
for(
int j =
1; j <= maxn; j++)}
}int
main()
int frontzero =1;
for(
int i = maxn; i >=
1; i--)if
(frontzero ==0)
}return0;
}
更加優秀的解法:
#include
#include
#include
#define maxn 2000
using
namespace std;
intmain()
} l = j;
}int frontzero =1;
for(
int i = maxn -
1; i >=
0; i--)if
(!frontzero)
}return0;
}
j+1>=l的理解,見高精度計算 模版 階乘之和(高精度)
題目描述 用高精度計算出s 1 2 3 n n 50 其中 表示階乘,例如 5 5 4 3 2 1。輸入格式 乙個正整數n。輸出格式 乙個正整數s,表示計算結果。輸入輸出樣例 輸入3輸出9 過載運算子 include include include include using namespace s...
求階乘之和 高精度
一道來自洛谷的求階乘之和的題 由於題目中給出的資料範圍較大,即使用long long也會造成資料溢位,所以要用到高精度的運算.學習了高精度運算之後就知道,可以用陣列來儲存範圍大的整數,於是,這道題我就是將資料從1開始依次相乘,每乘一次就將結果儲存盡數組當中,然後與前一次乘積結果相加以達到高精度求和的...
階乘計算(高精度)
基礎練習 階乘計算 時間限制 1.0s 記憶體限制 512.0mb 問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類...