Project Euler

Problem #40

An irrational decimal fraction is created by concatenating the positive integers:

0.123456789101112131415161718192021...

It can be seen that the 12^(th) digit of the fractional part is 1.

If d_(n) represents the n^(th) digit of the fractional part, find the value of the following expression.

d_(1) × d_(10) × d_(100) × d_(1000) × d_(10000) × d_(100000) × d_(1000000)

Ruby: Running time = 0.438s
def p40
  mult=1
  i=0
  n=0
  targets=(0..6).map{|j|10**j}
  while(targets.length>0)
    n+=1
    s=n.to_s
    i+=s.length
    if(targets.first<=i)
      j=i-targets.shift
      multie=s.reverse[j..j].to_i
      puts multie.to_s+ "   "+s
      mult*=multie
    end
  end
  puts mult
end