Table of Contents

## Question: Diwali Lights [Python Fundamentals]

On the eve of Diwali, Hari is decorating his house with a serial light bulb set. The serial light bulb set has N bulbs placed sequentially on a string which is programmed to change patterns every second. If at least one bulb in the set is on at any given instant of time, how many different patterns of light can the serial light bulb set produce?

Note: Lighting two bulbs *-* is different from **-

**Input Format**

The first line contains the number of test cases T, T lines follow.

Each line contains an integer N, the number of bulbs in the serial light bulb set.

**Output Format**

Print the total number of patterns modulo 105

**Constraints**

1 <= T <= 1000

0< N < 104

**Sample Input**

```
2
1
2
```

**Sample Output**

```
1
3
```

**Explanation**

Case 1: 1 bulb can be lit in only 1 way.

Case 2: 2 bulbs can be lit in -*, *-, ** i.e. 3 ways.

## Possible solutions

Now let us discuss the possible solutions to the problem. We already have been given the following code:

```
import math
import os
import random
import re
import sys
#
# Complete the 'lights' function below.
#
# The function is expected to return a LONG_INTEGER.
# The function accepts INTEGER n as parameter.
#
def lights(n):
# Write your code here
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
t = int(input().strip())
for t_itr in range(t):
n = int(input().strip())
result = lights(n)
fptr.write(str(result) + '\n')
fptr.close()
```

We just need to write our code in the `lights()`

function to solve the problem.

### Solution-1: Using the `pow()`

method

Let us use the `pow()`

method to solve the problem. The `pow()`

method in Python is used to find the power of the number.

```
import math
import os
import random
import re
import sys
def lights(n):
return pow(2, n, int(1E5)) - 1
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
t = int(input().strip())
for t_itr in range(t):
n = int(input().strip())
result = lights(n)
fptr.write(str(result) + '\n')
fptr.close()
```

The `lights()`

method takes in a single argument "`n`

". The function uses the built-in `pow()`

function to raise `2`

to the power of "`n`

", and then uses the modulo operator (`%`

), with the value int(1E5) as the second argument, to take the remainder of the result when divided by int(1E5). Finally, the function subtracts 1 from this remainder and returns the final value. In short, it's a function that takes an input n, calculates `2^n`

and then performs a modulus operation with `10^5`

, and then subtracts 1 from the result

### Solution-2: Alternative solution

In Python, we can also use double asterisk symbols instead of the `pow()`

method as shown below:

```
import math
import os
import random
import re
import sys
def lights(n):
return (2**n-1)%100000
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
t = int(input().strip())
for t_itr in range(t):
n = int(input().strip())
result = lights(n)
fptr.write(str(result) + '\n')
fptr.close()
```

The solution provides a different way to solve the problem from the previous one in the way it calculates the final value. Instead of using the built-in pow() function, it uses the exponential operator (`**`

) to raise 2 to the power of "n" and then subtracts 1 from the result. This result is then taken modulus of 100000. In the first code snippet, it uses pow(2, n, int(1E5)) which also performs the same operation, but in a different way. Both codes are performing the same operation, but the first one uses the pow() function and modulus operator, while the second one uses the exponential operator and modulus operator.

## Summary

In this short article, we discussed how we can solve the Diwali lights problem on Hacker Rank. The problem is of medium level and belongs to the mathematics category. We solved the problem using two different methods and explained each of them.

## Further Readings

Problem on Hacker Rank: Diwali Lights [Python Fundamentals]