@pz,@q = gets.split.map{|e|e.to_f/100.0} @memo={} def calc(pi,deep) pi = pi<0 ? 0.0 : 1200 # (´;ω;`) return @memo[pi] if @memo[pi] r = 0.0 #unused r += (1.0 + calc(pi+@q,deep+1)) /3.0 * (1.0-pi) if pi <1.0 #used r += (1.0 + calc(pi-@q,deep+1)) /2.0 * (pi) if pi >0.0 return @memo[pi] = r end r = 1.0/3.0 + 1.0/ 3.0 * calc(@pz,0) p r.to_f