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 my_nice_function(x) (4.0/3.0*(@b-@a*@a)*x+8.0/3.0*(@c-@a*@b))/(3.0*x*x+2.0*x*@a+@b)+(3.0*x+@a)/9.0 end def newton(x) x = (x).to_f 200.times{ return 0 if divc(x) == 0 x = x-calc(x)/divc(x)# my_nice_function(x)# } x.round end chance = (-20..20).to_a chance << (-1e9.to_i) chance << (1e9.to_i) 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 x0 = chance.pop unless chance.empty? z = newton(x0) next unless calc(z) == 0 li << z li.sort!.uniq! end puts li*" "