пятница, 11 мая 2012 г.

А ты походи по массиву, походи…


Еще одна задачи из категории "движение по массиву"; мы ее тоже разбирали с командой из Салавата и я надеюсь, что кто-то из них выложит решение, хотя оно совсем не такое уж и простое.


В массиве размером N ячеек содержатся числа из серии целых чисел от 1 до N (без повторения одно и того же значения). Каждое значение указывает на номер (индекс) ячейку, в которую следует перейти из данной.
Например, если в ячейке №5 содержится значение 12, это означает, что из ячейки №5 следует перейти в ячейку №12.
Массив называется "качественно заполненным", если можно пройти по всем его ячейкам.
Напишите метод, который принимает в качестве параметра массив и возвращает true, если массив является "качественно заполненным"; в ином случае метод возвращает false.

Успеха!

четверг, 10 мая 2012 г.

Длинная-длинная задача…


Речь идет о задаче, код решения которой как раз особо большими размерами не отличается, но вот время, которое уходит даже у сильного компьютера на ее решение, оказывается длинным-длинным…

Дана серия целых положительных чисел: 1, 2, 3 … М. Надо в этой серии найти такое число N, для которого сумма чисел в серии "слева" от него равна сумме чисел "справа" от него (само число не учитывается).

Например, для серии 1, 2, 3, 4, 5, 6, 7, 8 таким числом является 6, потому что 1+2+3+4+5=15 и 7+8=15.

Надо найти все пары чисел М и N, для которых выполняется описанное выше условие.

Эту задачу мы в принципиальном плане разобрали с командой из Салавата и Аня прислала вчера один из вариантов решения. Я надеюсь, что она его сегодня выложит, а от себя хочу добавить, что прогон решения для М=100000 занял у меня на приличном компе почте 7 минут…