回答編集履歴
2
別解追記
test
CHANGED
@@ -19,3 +19,25 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
`BigDecimal`ライブラリを使うと、任意精度(jの上限無し)にも出来ます。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
追記:
|
26
|
+
|
27
|
+
`BigDecimal`版です。`j+1`のところは`j`でも良いかもしれないけど考えてません。
|
28
|
+
|
29
|
+
```Ruby
|
30
|
+
|
31
|
+
require "bigdecimal"
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
def foo(n,i,j)
|
36
|
+
|
37
|
+
fraction = BigDecimal(1).div(BigDecimal(n),j+1).to_s("f")[1..-1]
|
38
|
+
|
39
|
+
fraction[i..j].split(//).inject(0){|sum,x| sum+=x.to_i}
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
```
|
1
誤りの修正
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
def foo(n,i,j)
|
10
10
|
|
11
|
-
fraction = (1.0/n)
|
11
|
+
fraction = sprintf("%.#{j+1}f",1.0/n)[1..-1]
|
12
12
|
|
13
13
|
fraction[i..j].split(//).inject(0){|sum,x| sum+=x.to_i}
|
14
14
|
|