回答編集履歴

3

追記

2015/05/20 02:10

投稿

haru666
haru666

スコア1591

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
- れが計算できるクラス`java.math.BigInteger`を使った場合の答えを書いておきますね。
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

問題に対する回答を追記

2015/05/20 02:10

投稿

haru666
haru666

スコア1591

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
- ループは3つではなく一つにするともできます。
107
+ れが計算できるクラス`java.math.BigInteger`を使った場合の答えを書いておきます
106
108
 
107
109
 
108
110
 
109
111
  ```lang-Java
110
112
 
111
- int total = 1;
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

問題を追記

2015/05/20 02:09

投稿

haru666
haru666

スコア1591

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
  **おまけ**