teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

コード修正

2015/07/25 14:17

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  def sum(str,i,j)
4
4
  i +=1
5
5
  total=0
6
- for n in i..j
6
+ for n in i..(j+1)
7
7
  total += str[n,1].to_i
8
8
  end
9
9
  total

5

コード修正

2015/07/25 14:17

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -21,16 +21,15 @@
21
21
  total=0
22
22
  amari=1
23
23
  for num in 1..j do
24
- b = (amari*10)/7
24
+ b = (amari*10)/n
25
25
  if num >= i then total += b end
26
26
  if b then print(b) else print(0) end
27
- amari = ((amari*10)%7)
27
+ amari = ((amari*10)%n)
28
28
  end
29
29
  total
30
30
  end
31
-
31
+ print("1.")
32
- p sum(97,2,96)
32
+ print("\n",sum(97,2,96))
33
-
34
33
  ```
35
34
 
36
35
  ###最初に投稿したもの

4

内容修正

2015/07/25 14:16

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,3 +1,39 @@
1
+ ###strを使うパターン
2
+ ```Ruby
3
+ def sum(str,i,j)
4
+ i +=1
5
+ total=0
6
+ for n in i..j
7
+ total += str[n,1].to_i
8
+ end
9
+ total
10
+ end
11
+
12
+ str =
13
+ "0.010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567"
14
+ p sum(str, 2, 96)
15
+ ```
16
+
17
+ ###jが無制限なパターン
18
+ 検証のしようが無いのですが、多分無制限なはず
19
+ ```Ruby
20
+ def sum(n,i,j)
21
+ total=0
22
+ amari=1
23
+ for num in 1..j do
24
+ b = (amari*10)/7
25
+ if num >= i then total += b end
26
+ if b then print(b) else print(0) end
27
+ amari = ((amari*10)%7)
28
+ end
29
+ total
30
+ end
31
+
32
+ p sum(97,2,96)
33
+
34
+ ```
35
+
36
+ ###最初に投稿したもの
1
37
  限界は14?
2
38
  ※ 15桁目以降の数値が1/nのほうと一致しませんし
3
39
  ※ それ以降は成否の検証方法が分からなかったため

3

コード修正

2015/07/25 14:13

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,14 +1,17 @@
1
- ありますね。修正中
1
+ 界は14?
2
- //論理上上限無(ハードウェアリソース的な限界はあるかも)
2
+ ※ 15桁目以降の数値が1/nほうと一致ませんし
3
+ ※ それ以降は成否の検証方法が分からなかったため
3
4
  ```ruby
4
5
  def c(n,i,j)
5
6
  r=0
6
7
  for num in i..j do
7
- r += ((1.0*10**num/n)).floor % 10
8
+ r += ((1.0*10**num)/n).floor % 10
8
- print(((1.0*10**num/n)).floor % 10, " + ")
9
+ print(((1.0*10**num)/n).floor % 10, " + ")
9
10
  end
10
11
  r
11
12
  end
12
13
 
14
+ print(1.0/7, ": ")
13
- print("= ",c(7,1,5)) #1 + 4 + 2 + 8 + 5 + = 20
15
+ print("= ",c(7,1,16))
16
+ #0.142857142857143: 1 + 4 + 2 + 8 + 5 + 7 + 1 + 4 + 2 + 8 + 5 + 7 + 1 + 4 + 2 + 8 + = 69
14
17
  ```

2

修正中

2015/07/25 13:03

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,4 +1,5 @@
1
+ 上限ありますね。修正中
1
- 論理上の上限無し(ハードウェアリソース的な限界はあるかも)
2
+ //論理上の上限無し(ハードウェアリソース的な限界はあるかも)
2
3
  ```ruby
3
4
  def c(n,i,j)
4
5
  r=0

1

コード修正

2015/07/25 12:48

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -3,8 +3,8 @@
3
3
  def c(n,i,j)
4
4
  r=0
5
5
  for num in i..j do
6
- r += ((1.0/n)*10**num).floor % 10
6
+ r += ((1.0*10**num/n)).floor % 10
7
- print(((1.0/n)*10**num).floor % 10, " + ")
7
+ print(((1.0*10**num/n)).floor % 10, " + ")
8
8
  end
9
9
  r
10
10
  end