回答編集履歴
1
補足を追加
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
|
+
```
|