回答編集履歴
3
追記
test
CHANGED
@@ -96,15 +96,17 @@
|
|
96
96
|
|
97
97
|
total に 40の階乗がこのままだと入りません。
|
98
98
|
|
99
|
+
40の階乗という数値はとても大きいのです。
|
100
|
+
|
99
101
|
long や int ではオーバーフローを起こしてしまい正しく計算できません。
|
100
102
|
|
101
103
|
この点については、学校の先生に問題の解釈があっているか聞いて下さい。
|
102
104
|
|
103
105
|
|
104
106
|
|
105
|
-
|
107
|
+
ただ、それだとあまりにもあれなので…
|
106
108
|
|
107
|
-
こ
|
109
|
+
この計算ができるクラス`java.math.BigInteger`を使った場合の答えを書いておきますね。
|
108
110
|
|
109
111
|
|
110
112
|
|
@@ -117,6 +119,8 @@
|
|
117
119
|
BigInteger total = BigInteger.valueOf(1);
|
118
120
|
|
119
121
|
|
122
|
+
|
123
|
+
// ループは一つにすることもできます。
|
120
124
|
|
121
125
|
for (int number=1; number <=100; number++) {
|
122
126
|
|
2
問題に対する回答を追記
test
CHANGED
@@ -86,6 +86,12 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
+
---
|
90
|
+
|
91
|
+
**おまけ**
|
92
|
+
|
93
|
+
|
94
|
+
|
89
95
|
一つ問題があります。
|
90
96
|
|
91
97
|
total に 40の階乗がこのままだと入りません。
|
@@ -96,19 +102,19 @@
|
|
96
102
|
|
97
103
|
|
98
104
|
|
99
|
-
|
105
|
+
おまけで、ループを一つにすることと…
|
100
106
|
|
101
|
-
**おまけ**
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
107
|
+
これが計算できるクラス`java.math.BigInteger`を使った場合の答えを書いておきますね。
|
106
108
|
|
107
109
|
|
108
110
|
|
109
111
|
```lang-Java
|
110
112
|
|
111
|
-
i
|
113
|
+
import java.math.*;
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
BigInteger total = BigInteger.valueOf(1);
|
112
118
|
|
113
119
|
|
114
120
|
|
@@ -118,17 +124,23 @@
|
|
118
124
|
|
119
125
|
// 40まではtotalに対してnumberを掛け算
|
120
126
|
|
127
|
+
total = total.multiply(BigInteger.valueOf(number));
|
128
|
+
|
121
129
|
}
|
122
130
|
|
123
131
|
else if (number <= 50 {
|
124
132
|
|
125
133
|
// 次の50までは(=41から50までは)totalに対してnumberを掛け算
|
126
134
|
|
135
|
+
total = total.subtract(BigInteger.valueOf(number));
|
136
|
+
|
127
137
|
}
|
128
138
|
|
129
139
|
else {
|
130
140
|
|
131
141
|
// その他(=51以上)から最後まではtotalに対してnumberを足し算
|
142
|
+
|
143
|
+
total = total.add(BigInteger.valueOf(number));
|
132
144
|
|
133
145
|
}
|
134
146
|
|
1
問題を追記
test
CHANGED
@@ -86,6 +86,16 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
+
一つ問題があります。
|
90
|
+
|
91
|
+
total に 40の階乗がこのままだと入りません。
|
92
|
+
|
93
|
+
long や int ではオーバーフローを起こしてしまい正しく計算できません。
|
94
|
+
|
95
|
+
この点については、学校の先生に問題の解釈があっているか聞いて下さい。
|
96
|
+
|
97
|
+
|
98
|
+
|
89
99
|
---
|
90
100
|
|
91
101
|
**おまけ**
|