Числа от 1 до N выписали в ряд. Из этого ряда сначала вычеркнули все числа стоящие на четных местах. Далее, в оставшемся ряду чисел удаляют те, которые стоят в нем на нечетных местах. Затем те, которые стоят в оставшемся после первых двух операций ряду на местах, номера которых кратны трем. Затем - снова на четных местах, на нечетных, на местах, кратных трем. Вычеркивания проводят до тех пор, пока не останется одно число. Нужно написать скрипт который определит это число.
N - число от 1 до 10^8
Эксплод + цикл думаю поможет
добавлено спустя 14 минут:
Блин.. Писал-писал програмку.. На телефоне опера лагонула и все..
Зачем тебе это?
[php:1:a7097b4fda]
$row = "1 2 3 4 5 6 7 8 9 10 11 12 13"; //считаем что ряд нумеруется с единицы, а не с нуля
$row_array = explode(' ', $row);
while (count($row_array) > 1)
{
for ($i = 1; $i < count($row_array); $i = $i + 2) unset($row_array[$i]);
$row_array = array_values($row_array);
if (count($row_array) <= 1) break;
for ($i = 0; $i < count($row_array); $i = $i + 2) unset($row_array[$i]);
$row_array = array_values($row_array);
if (count($row_array) <= 1) break;
for ($i = 2; $i < count($row_array); $i = $i + 3) unset($row_array[$i]);
$row_array = array_values($row_array);
}
print "Осталось ".$row_array[0];[/php:1:a7097b4fda]
Lexan, for ($i = 1; $i < count($row_array); $i = $i + 2) unset($row_array[$i]);
$row_array = array_values($row_array);
if (count($row_array) <= 1) break;
i+2 будет нечетное место
(1+2=3)
добавлено спустя 3 минуты:
как я понял это ты вычеркивал сначало нечетные потом только четные, а надо наоборот.
SL_NeKrOmAnT, в массиве элементы номеруются с 0, а в ряду нумерацию принял с единицы. Поэтому нечетные элементы массива будут соответвовать четным элементам в ряду и наоборот. А вообще, в задаче не указано с нуля или единицы начинать нумерацию
29 Янв 2012, 20:04Lexan, я так думаю, что первый элемент это все же индекс 0, не думаю что задачу завязывали на специфике языка.
30 Янв 2012, 14:08