[ create a new paste ] login | about

Link: http://codepad.org/qb8xTVbg    [ raw code | output | fork ]

Ruby, pasted on Jun 22:
require "bigdecimal"


n = gets.to_i
m = 2
max = BigDecimal::new("0.0")
min = BigDecimal::new("0.0")


# 入力された数字が1の場合
if n == 1
	puts 1

else
	# 範囲決定
	while max == 0
		if m * m * m  >= n
			max = m
		end
		m += 1
	end

	# nが3乗根の場合
	if n == max * max * max
		puts max
		
	# 二分法を使って3乗根の近似値を出力する
	else
		min = max - 1.0
		for i in 1..20
			mid = (min + max) / 2

			#途中経過を出力する
			puts mid

			midcu = mid * mid * mid
			if midcu < n
				min = mid
			else
				max = mid
			end
		end
		puts mid
	end
	
end


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.5
1.25
1.125
1.0625
1.03125
1.015625
1.0078125
1.00390625
1.001953125
1.0009765625
1.00048828125
1.000244140625
1.0001220703125
1.00006103515625
1.00003051757812
1.00001525878906
1.00000762939453
1.00000381469727
1.00000190734863
1.00000095367432
1.00000095367432


Create a new paste based on this one


Comments: