This is a general form of 100 doors problem.Here you have n doors.All doors are initially closed.m persons walk through all the doors and toggle them(open if close and vice-versa).
Person 1 walks and toggle(open) all doors.
Person 2 walks and toggle each door that is a multiple of 2,i.e.,2nd,4th,6th,8th,…
Person 3 walks and toggle each door that is a multiple of 3,i.e.,3rd,6th,9th,12th,…
Person m walks and toggle each door that is multiple of m.
Which doors are open in the end?
The solution is somewhat similar to the 100 doors problem.Each door that has odd no. of walks will be opened and rests will be closed.Now if there are m walks then all door no. which are less than m and a perfect square will be opened.But for other doors ,i.e., where door no. is greater than n the scenario will change and some more doors will be added to the list.
Let there are 5 doors and 3 persons.
Then Person 1 will open each door.
Person 2 will close doors that are even,i.e. door 2 and door 4.
Person 3 will close door 3.
In this case,the answer is 1 and 5.
Implementation in Python:-
#Here 0 represents that door is close and 1 represents that door is open. def toggle(n): #closes door if they are open and opens if they are closed. if doors[n]==1: doors[n]=0 else: doors[n]=1 n=int(input('Enter the no. of doors available')) m=int(input('Enter the no. of persons')) doors=*n#Initializing n doors with 0.(They are closed initially) for i in range(1,m+1):#Iterating through m times j=i while j<=n: toggle(j-1) j=j+i for x in range(n): if doors[x]==1: print(x+1,end=" ")