Xwab
Форумыnavigate_nextПрограммирование на PHP

Задача. Удаление чисел
Сообщения
Netot

Числа от 1 до N выписали в ряд. Из этого ряда сначала вычеркнули все числа стоящие на четных местах. Далее, в оставшемся ряду чисел удаляют те, которые стоят в нем на нечетных местах. Затем те, которые стоят в оставшемся после первых двух операций ряду на местах, номера которых кратны трем. Затем - снова на четных местах, на нечетных, на местах, кратных трем. Вычеркивания проводят до тех пор, пока не останется одно число. Нужно написать скрипт который определит это число.

N - число от 1 до 10^8

29 Янв 2012, 8:16
Amarelle

Эксплод + цикл думаю поможет
добавлено спустя 14 минут:
Блин.. Писал-писал програмку.. На телефоне опера лагонула и все..

29 Янв 2012, 9:18
Lexan

Зачем тебе это?
[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]

29 Янв 2012, 18:16
SL_NeKrOmAnT

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 минуты:
как я понял это ты вычеркивал сначало нечетные потом только четные, а надо наоборот.

29 Янв 2012, 18:45
Lexan

SL_NeKrOmAnT, в массиве элементы номеруются с 0, а в ряду нумерацию принял с единицы. Поэтому нечетные элементы массива будут соответвовать четным элементам в ряду и наоборот. А вообще, в задаче не указано с нуля или единицы начинать нумерацию

29 Янв 2012, 20:04
SL_NeKrOmAnT

Lexan, теперь понял  но можно было так не мудрить, а в цикле i=0

29 Янв 2012, 21:27
M0rtiis

Lexan, я так думаю, что первый элемент это все же индекс 0, не думаю что задачу завязывали на специфике языка.

30 Янв 2012, 14:08
NoteFree

count() в цикле

31 Янв 2012, 5:00
M0rtiis

NoteFree, о да))) вы мегооптимизатор)

31 Янв 2012, 11:36
NoteFree

M0rtiis, мего, не мего, ну какой есть)

31 Янв 2012, 14:55
Ответить на тему