質問するログイン新規登録

回答編集履歴

1

補足を追加

2020/07/30 11:41

投稿

Daregada
Daregada

スコア11992

answer CHANGED
@@ -1,3 +1,24 @@
1
1
  あなたが使っているC言語の処理系の`long int`が扱える整数の範囲を調べましょう。32ビット符号付き整数だとすると、12の階乗までしか保持できません。
2
2
 
3
- `long long int`が64ビット符号付き整数なら20の階乗までは保持できますが、いずれにしろ100の階乗は無理ですね。
3
+ `long long int`が64ビット符号付き整数なら20の階乗までは保持できますが、いずれにしろ100の階乗は無理ですね。
4
+
5
+ 追加分:
6
+ いや、doubleにしても有効桁数の制限があるので、正確な値は出ませんよ。
7
+
8
+ (多倍長整数を扱える)Pythonでやってみると、どのくらいの桁数かわかります。
9
+ ```Python
10
+ n = 1
11
+ for i in range(1, 101):
12
+ n *= i
13
+ print(n)
14
+ ```
15
+ ```result
16
+ 1
17
+ 2
18
+ 6
19
+ 24
20
+ 120
21
+ (中略)
22
+ 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000
23
+ 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
24
+ ```