題目描述
用高精度計算出s=1
!+2!
+3!+
…+n!
(n≤50
)s=1!+2!+3!+…+n! (n\le 50)
s=1!+2
!+3!
+…+n
!(n≤
50)其中「!」
「!」「!
」表示階乘,例如:5!=
5×4×
3×2×
15!=5 \times 4 \times 3 \times 2 \times 1
5!=5×4
×3×2
×1。輸入格式
乙個正整數nnn。
輸出格式
乙個正整數s
ss,表示計算結果。
輸入輸出樣例
輸入 #1 複製
3
輸出 #1 複製9
高精度啦,用運算子過載。不會的就用陣列模擬。
#include
#define maxn 10005
using
namespace std
/*********************以下是模板*******************/
struct bignum
bignum (
int num)
bignum (
const
char
*num)
bignum operator=(
const
char
*a) bignum operator=(
const
int num)
bignum operator+(
const bignum &a)
if(c.s[c.len]==0
) c.len--
;return c;
} bignum operator+=
(const bignum &a)
bignum operator*(
const bignum &a)
while
(c.s[c.len]==0
) c.len--
;return c;
} bignum operator*=
(const bignum &a)
bool
operator
<
(const bignum &a)
const
bool
operator
>
(const bignum &a)
const
bool
operator
<=
(const bignum &a)
const
bool
operator
>=
(const bignum &a)
const
bool
operator==(
const bignum &a)
const
bool
operator!=(
const bignum &a)
const
void change (bignum &a,bignum &b)
bignum operator-(
const bignum &a)
const
}while
(c.len==0)
c.len--
;return c;
} c.len=b.len;
for(
int i=
1; i<=c.len;
++i)
}while
(c.len==0)
c.len--
;return c;
} bignum operator-=
(const bignum &a)
bignum operator/(
const
int n)
while
(c.s[c.len]==0
) c.len--
;return c;
} bignum operator/=
(const
int a)};
ostream&
operator
<<
(ostream &out,
const bignum &x)
/*******************以上是模板*********************/
int n;
bignum sum,ans;
intmain()
cout
}
洛谷 P1009 階乘之和
題目描述 用高精度計算出s 1 2 3 n n 50 s 1 2 3 n n 50 其中 表示階乘,例如 5 5 times 4 times 3 times 2 times 15 5 4 3 2 1。乙個正整數nn。乙個正整數ss,表示計算結果。輸入 1複製 3輸出 1複製 9分析 本來以為昨晚寫完...
洛谷 P1009 階乘之和
用高精度計算出s 1!2!3!n!n 50 其中 表示階乘,例如 5!5 4 3 2 1。輸入格式 乙個正整數n。輸出格式 乙個正整數s,表示計算結果。輸入樣例 1 複製 3 輸出樣例 1 複製 9 思路 高精度加法 高精度乘法。include include include include usi...
階乘之和 洛谷 P1009題
首先,題目傳送門是一定要有的 接下來就是題目描述了 用高精度計算出s 1 2 3 n n 50 其中 表示階乘,例如 5 5 4 3 2 1。乙個正整數n 乙個正整數s 表示計算結果。輸入 1 3 輸出 1 9 注 深入淺出基礎篇 中使用本題作為例題,但是其資料範圍只有 n 20,使用書中的 無法通...