Created
November 3, 2011 11:30
-
-
Save bvp/1336288 to your computer and use it in GitHub Desktop.
Решение задачи про 100 открытых шкафчиков
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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