27.6k views
4 votes
Locker doors There are n lockers in a hallway, numbered sequentially from 1 to n. Initially, all the locker doors are closed. You make n passes by the lockers, each time starting with locker #1. On the ith pass, i = 1, 2,...,n, you toggle the door of every ith locker: if the door is closed, you open it; if it is open, you close it. After the last pass, which locker doors are open and which are closed? How many of them are open?

User Upful
by
5.1k points

1 Answer

3 votes

Answer:

// here is code in C++

#include <bits/stdc++.h>

using namespace std;

// main function

int main()

{

// variables

int n,no_open=0;

cout<<"enter the number of lockers:";

// read the number of lockers

cin>>n;

// initialize all lockers with 0, 0 for locked and 1 for open

int lock[n]={};

// toggle the locks

// in each pass toggle every ith lock

// if open close it and vice versa

for(int i=1;i<=n;i++)

{

for(int a=0;a<n;a++)

{

if((a+1)%i==0)

{

if(lock[a]==0)

lock[a]=1;

else if(lock[a]==1)

lock[a]=0;

}

}

}

cout<<"After last pass status of all locks:"<<endl;

// print the status of all locks

for(int x=0;x<n;x++)

{

if(lock[x]==0)

{

cout<<"lock "<<x+1<<" is close."<<endl;

}

else if(lock[x]==1)

{

cout<<"lock "<<x+1<<" is open."<<endl;

// count the open locks

no_open++;

}

}

// print the open locks

cout<<"total open locks are :"<<no_open<<endl;

return 0;

}

Step-by-step explanation:

First read the number of lockers from user.Create an array of size n, and make all the locks closed.Then run a for loop to toggle locks.In pass i, toggle every ith lock.If lock is open then close it and vice versa.After the last pass print the status of each lock and print count of open locks.

Output:

enter the number of lockers:9

After last pass status of all locks:

lock 1 is open.

lock 2 is close.

lock 3 is close.

lock 4 is open.

lock 5 is close.

lock 6 is close.

lock 7 is close.

lock 8 is close.

lock 9 is open.

total open locks are :3

User Beau Harder
by
5.3k points