def ascan; gets.split.map(&:to_i); end def scan; gets.to_i; end aa,bb,cc = ascan @a=aa @b=bb @c=cc def calc(x) x*x*x+@a*x*x+@b*x+@c end def divc(x) 3*x*x+2*@a*x+@b end def newton(x) x = (x).to_f 200.times{ return 0 if divc(x) == 0 x = x-calc(x)/divc(x) } x.round end li = [] while li.size<3 x0 = rand((-1e9.to_i)..(1e9.to_i)) x0 = rand((li[0]+1)...(li[1])) if li.size == 2 && rand(50) == 0 z = newton(x0) next unless calc(z) == 0 li << z li.sort!.uniq! end puts li*" "