i found this question on hackerrank. can anyone explain how this can be solved using c++ .

@sumesh –

The basics of the solution is a simple loop. This is pseudocode…

```
declare t_Nminus2 := t1 // function parameter
declare t_Nminus1 := t2 // function parameter
declare t_N
for i := 3 to n inclusive // n is a function parameter
t_N := t_Nminus2 + t_Nminus1 * t_Nminus1
t_Nminus2 := t_Nminus1
t_Nminus1 := t_N
end for
return t_N
```

The challenge isn’t the base algorithm outlined above. The challenge is the datatype to use for t_N.

Since **n** can be up to 20 and the next term includes the square of the prior term, the max possible value of t_N is much larger than *ULLONG_MAX* (largest possible unsigned long long int), as the HackerRank problem statement says. There is no native data type in C++ that can handle such large integers, so it’s possible this problem wants you to create your own datatype.