Original

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

0.123456789101112131415161718192021...

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

If dn represents the nth digit of the fractional part, find the value of the following expression.

d1 × d10 × d100 × d1000 × d10000 × d100000 d1000000

和訳

正の整数を順に連結して得られる以下の10進の無理数を考える:

0.123456789101112131415161718192021...

小数第12位は1である.

dnで小数第n位の数を表す. d1 × d10 × d100 × d1000 × d10000 × d100000 d1000000 を求めよ.

当てにならないソースコード(C#)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;

namespace ProjectEuler {
    class Problem40 : Problem{
        public Problem40() {
            int[] target = {1, 10, 100, 1000, 10000, 100000, 1000000};
            int count = 0, next = 0;
            List<int> answer = new List<int>();
            for (int i = 1; next < target.Length; i++) {
                count += i.ToString().Length;
                if (count >= target[next]) {
                    answer.Add((i / (int)Math.Pow(10, count - target[next])) % 10);
                    ++next;
                }
            }
            //answer.ForEach((d)=>Console.WriteLine(d));
            Console.WriteLine("> " + answer.Aggregate((a,b)=>a*b));
        }
    }
}


小数で考える必要のない問題です。