Skip to content

Instantly share code, notes, and snippets.

@bvp
Created November 3, 2011 11:30
Show Gist options
  • Save bvp/1336288 to your computer and use it in GitHub Desktop.
Save bvp/1336288 to your computer and use it in GitHub Desktop.
Решение задачи про 100 открытых шкафчиков
public class ProblemOfDrawers {
/**
* Добавляем префиксный 0 перед цифрой, если она меньше 10
* @param input
* @return
*/
private static String odd(int input) {
String r = String.valueOf(input);
if (input < 10) {
r = "0"+String.valueOf(input);
}
return r;
}
public static void main(String[] args) {
/*
* Задача 100 закрытых шкафчиков
*
* Представьте, что вы стоите в коридоре и перед вами 100 закрытых шкафчиков.
* Вы начинаете по очереди открывать их, один за другим, до конца. Затем,
* вы возвращаетесь к первому шкафчику и начинаете закрывать каждый второй,
* двигаясь к последнему. После вы открываете (если он закрыт) или закрываете
* (если открыт), каждый третий шкафчик (назовём это действие переключением
* шкафчика). Продолжая в том же духе, во время сотого прохода вы переключаете
* только один, сотый шкафчик, пропустив 99 перед ним.
* Сколько шкафчиков после этого останется открытыми?
*
* Ниже пример решения данной задачи
*/
boolean[] arr;
arr = new boolean[100];
int count = 0;
System.out.println("Размер массива " + arr.length);
// Инициализируем массив
for (int i = 0; i < arr.length; i++) {
arr[i] = false;
}
System.out.println("Массив инициализирован...");
// Выводим первоначальный массив
for (int i = 0; i < arr.length; i++) {
System.out.println("Элемент "+odd(i)+": Значение " + odd(i) + " = " + arr[i]);
}
System.out.println("");
// Выводим изменения
for(int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr.length; j++) {
if ((j+1)%(i+1) == 0) {
arr[j] = !(arr[j]);
System.out.println("Обход "+odd(i)+", Элемент "+odd(j)+": Изменено " + odd(j) + " = " + arr[j]);
} else {
System.out.println("Обход "+odd(i)+", Элемент "+odd(j)+": Значение " + odd(j) + " = " + arr[j]);
}
}
System.out.println("");
}
// Подсчитываем количество true
for (int i = 0; i < arr.length; i++) {
if (arr[i]) {
count+=1;
}
}
System.out.println("Количество открытых " + count);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment