Ninja has created his own encryption technique to encrypt a number. He makes use of the logic behind factorial. In a factorial, we multiply the number by its previous number and so on but if we want to encrypt a number we donβt multiply in every step like in the case of factorial but multiply, divide, add and subtract and repeat in the same order.
So your task is to find the encrypted form of a number using the ninja encryption technique and you were being provided with the number.
The first line contains an integer 'T' which denotes the number of test cases or queries to be run.
The first line of each test case contains a single integer βNβ denoting the given number.
Output Format:
For each test case, print a single line containing the encrypted form of the number.
The output of each test case will be printed in a separate line.
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.
1 <= T <= 5
1 <= N <= 5000
Time Limit: 1 sec
2
5
8
7
9
Test Case 1:
For the first test case, given number is β5β so using the ninja encryption technique we follow the steps: ( 5 * 4 / 3 + 2 - 1 ) = 7
Test Case 2:
For the first test case, the given number is β8β so using the ninja encryption technique we follow the steps: ( 8 * 7 / 6 + 5 - 4 * 3 / 2 - 1 ) = 9
1
12
13
Can you think of applying operations in the given order until we reach β1β?
The idea here is very simple as you can see that we are simply applying operations like multiply and divide and alternatively we are adding and subtracting the result. So we just have to find the result of every three numbers in every iteration and we can simply do the required operations alternatively.
O(N), where βNβ represents the given number.
As we are traversing up to when the number is greater than 0 so overall complexity becomes equal to O(N).
O(1)
As no extra space is required.