回答編集履歴
3
追記
answer
CHANGED
@@ -47,17 +47,19 @@
|
|
47
47
|
|
48
48
|
一つ問題があります。
|
49
49
|
total に 40の階乗がこのままだと入りません。
|
50
|
+
40の階乗という数値はとても大きいのです。
|
50
51
|
long や int ではオーバーフローを起こしてしまい正しく計算できません。
|
51
52
|
この点については、学校の先生に問題の解釈があっているか聞いて下さい。
|
52
53
|
|
53
|
-
|
54
|
+
ただ、それだとあまりにもあれなので…
|
54
|
-
こ
|
55
|
+
この計算ができるクラス`java.math.BigInteger`を使った場合の答えを書いておきますね。
|
55
56
|
|
56
57
|
```lang-Java
|
57
58
|
import java.math.*;
|
58
59
|
|
59
60
|
BigInteger total = BigInteger.valueOf(1);
|
60
61
|
|
62
|
+
// ループは一つにすることもできます。
|
61
63
|
for (int number=1; number <=100; number++) {
|
62
64
|
if (number <= 40) {
|
63
65
|
// 40まではtotalに対してnumberを掛け算
|
2
問題に対する回答を追記
answer
CHANGED
@@ -42,28 +42,34 @@
|
|
42
42
|
System.out.println(total);
|
43
43
|
```
|
44
44
|
|
45
|
+
---
|
46
|
+
**おまけ**
|
47
|
+
|
45
48
|
一つ問題があります。
|
46
49
|
total に 40の階乗がこのままだと入りません。
|
47
50
|
long や int ではオーバーフローを起こしてしまい正しく計算できません。
|
48
51
|
この点については、学校の先生に問題の解釈があっているか聞いて下さい。
|
49
52
|
|
50
|
-
---
|
51
|
-
|
53
|
+
おまけで、ループを一つにすることと…
|
54
|
+
これが計算できるクラス`java.math.BigInteger`を使った場合の答えを書いておきますね。
|
52
55
|
|
53
|
-
ループは3つではなく一つにすることもできます。
|
54
|
-
|
55
56
|
```lang-Java
|
56
|
-
|
57
|
+
import java.math.*;
|
57
58
|
|
59
|
+
BigInteger total = BigInteger.valueOf(1);
|
60
|
+
|
58
61
|
for (int number=1; number <=100; number++) {
|
59
62
|
if (number <= 40) {
|
60
63
|
// 40まではtotalに対してnumberを掛け算
|
64
|
+
total = total.multiply(BigInteger.valueOf(number));
|
61
65
|
}
|
62
66
|
else if (number <= 50 {
|
63
67
|
// 次の50までは(=41から50までは)totalに対してnumberを掛け算
|
68
|
+
total = total.subtract(BigInteger.valueOf(number));
|
64
69
|
}
|
65
70
|
else {
|
66
71
|
// その他(=51以上)から最後まではtotalに対してnumberを足し算
|
72
|
+
total = total.add(BigInteger.valueOf(number));
|
67
73
|
}
|
68
74
|
}
|
69
75
|
|
1
問題を追記
answer
CHANGED
@@ -42,6 +42,11 @@
|
|
42
42
|
System.out.println(total);
|
43
43
|
```
|
44
44
|
|
45
|
+
一つ問題があります。
|
46
|
+
total に 40の階乗がこのままだと入りません。
|
47
|
+
long や int ではオーバーフローを起こしてしまい正しく計算できません。
|
48
|
+
この点については、学校の先生に問題の解釈があっているか聞いて下さい。
|
49
|
+
|
45
50
|
---
|
46
51
|
**おまけ**
|
47
52
|
|