### The Problem

The series, 1

^{1}+ 2^{2}+ 3^{3}+ ... + 10^{10}= 10405071317.Find the last ten digits of the series, 1

^{1}+ 2^{2}+ 3^{3}+ ... + 1000^{1000}.

### The Solution

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
those.

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.