Login
Order Now
Support
theprogrammingassignmenthelp

Java Program - Allocating Lockers To Students

  • 5th Jun, 2019
  • 17:15 PM

Question

A school has 100 lockers and 100 students. All lockers are closed on the first day of school. 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 was closed). Student S4 begins with locker L4 and changes every fourth locker. Student S5 starts with L5 and changes every fifth locker, and so on, until student S100 changes L100. After all the students have passed through the building and changed the lockers, which lockers are open?

Write a program to find your answer.

Answer

public class Problem3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // declare locker
        boolean[] locker;
        // allocates locker
        locker = new boolean[100];
        // Init the locker
        for (int i = 0; i < 100; ++i) {
            locker[i] = false;
        }
        // logic
        int counter = 1;
        for (int i = 0; i < 100; ++i) {
            // the first student - Open very locker
            if (i == 0) {
                for (int j = i; j < 100; ++j) {
                    locker[j] = true;
                }
                counter++;
                continue;
            }
            // the second student - Begin with the locker 2 and close every other locker
            if (i == 1) {
                for (int j = i; j < 100; ++j) {
                    locker[j] = false;
                }
                counter++;
                continue;
            }
            // Logic for normal
            //System.out.print((i + 1) + " : ");
            for (int j = i; j < 100; ++j) {
                if (j % counter == i) {
                    //System.out.print((j + 1) + " ");
                    if (locker[j] == true) {
                        locker[j] = false;
                    } else {
                        locker[j] = true;
                    }
                }
            }
            //System.out.println("");
            counter++;
        }

        for (int i = 0; i < 100; ++i) {
            if (locker[i] == true) {
                System.out.println("Locker " + (i + 1) + " is open");
            }
        }

    }

}
 

Share this post