I'm a beginning C++ student/programmer, and I'm having a difficult time coming up with an algorithm to solve a programming problem. If someone could give me a recipe on how to go about solving the following problem using c++, I would appreciate it.

Problem: A school has 100 lockers and 100 students. All lockers are closed on the first day of shcool. As the students enter, the first student, denoted S1, opens every locker. Then the second student, S2, begins with the second locker, denoted L2, and closes every other locker. Student S3 begins with the third locker and changes every third locker (closes it if it was open, and opens it if it is closed). Student S4 begins with locker L4 and changes every fourth locker. Student S5 starts with L5 and changes every fifth locker, etc. until student S100 changes L100.

After all the students have passed through the building and changed the lockers, which lockers are open? Write a C++ program to find your answer.

Hint: Use an array of 100 elements, each of which stores the number of times a locker has changed. If a locker changes an even number of times, it is closed; otherwise, it is open.


Recommended Answers

All 4 Replies

Member Avatar

I would think about using the modulus operator for this.

Locker 42 is the only one which remains open.

I came up with some code that I'm going to input and run tomorrow. Hopefully, the result will be 42.


If you get 42, the universe will end!

Hopefully, you code uses 2 nested loops -- FOR loops are best.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.