The series, 11 + 22 + 33 + ... + 1010 = 10405071317.
Find the last ten digits of the series, 11 + 22 + 33 + ... + 10001000.
I don't know what people working in C are doing to solve these problems that involve enormous
integer values. But fortunately we're on the .NET stack and we have
BigInteger. It makes solving
this problem trivial.
let sum = Seq.unfold (fun state -> Some(state, state+1)) 1 |> Seq.map (fun n -> pown (bigint n) n) |> Seq.take 1000 |> Seq.sum let str = string sum str.Substring(str.Length - 10)
We start out by generating natural numbers with
Seq.unfold. We use
Seq.map to raise each element
to its own power using
pown. Then we take the first 1000 elements of that sequence. Then we sum
Next, we convert that number to a string. If you're curious, that string has 3001 characters in it.
Last, we use
Substring to get the last 10 digits of the string. That is our answer.