## Instructions

**Task**

You are given three non negative integers a, b and n, and making an infinite sequence just like fibonacci sequence, use the following rules:

step 1: use ab as the initial sequence.

step 2: calculate the sum of the last two digits of the sequence, and append it to the end of sequence.

repeat step 2 until you have enough digits

Your task is to complete the function which returns the nth digit (0-based) of the sequence.

**Notes:**

0 <= a, b <= 9, 0 <= n <= 10^10

16 fixed testcases

100 random testcases, testing for correctness of solution

100 random testcases, testing for performance of code

All inputs are valid.

Pay attention to code performance.

**Examples**

For a = 7, b = 8 and n = 9 the output should be 5, because the sequence is:

78 -> 7815 -> 78156 -> 7815611 -> 78156112 -> 781561123 -> 7815611235 -> ...

and the 9th digit of the sequence is 5.

For a = 0, b = 0 and n = 100000000 the output should be 0, because all the digits in this sequence are 0.

## My solution:

```
function find(a,b,n){
let r = a.toString() + b.toString()
n = +n.toString().slice(-4);
while (r.length <= n){
let x = r.split('')
r += (+x[x.length-1] + +x[x.length-2]).toString()
}
return +r.charAt(n)
}
```

## Explanation

First I started concatinating the 2 first numbers as a string, then I changed the n value, because if it was too high, the code performance would be awful and it tooka lot to returning the result, so I just used the last 4 numbers of the n variable because after some cycles, the result is the same.

let r = a.toString() + b.toString()

n = +n.toString().slice(-4);

After that I used a while loop that would keep iterating until the string "r" length is equal to "n", inside the loop I made a variable "x" that splitted the "r" string into an array and after that the "r" string will concatenate and be equal to the sum of the last 2 elements of the "x" array, for making this strings a number I just added the + operator before the values, and after summing them I just made them string again so for the next loop cycle it would be a string again.

r += (+x[x.length-1] + +x[x.length-2]).toString()

At the end I just returned the character at the "n" position of the "r" string, and converted it to a number because I used the + operator before returning the value.

return +r.charAt(n)

**Comment how would you solve this kata and why? ππ€**

## Top comments (2)

It could work the string length is growing too much. Just keep the last two characters instead ππ»

Yeah, maybe I could just keep the last two characters and keep concatinating them to the main string, so I don't have to continue splitting the main string in every loop.

Good contribution π