Потестил ваш код. Почитал про побитовые операторы. Хоть убей не пойму в чём его суть. var_dump($r) возвращает 5085 что не соответствует не одному из элементов массива.PHP:$r = 0; foreach ($a as $v) { $r ^= $v; } var_dump($r);
$r=0;
$r ^= 0;\\ $r == 0
$r ^= 1;\\ $r == 1
$r ^= 2;\\ $r == 2
$r ^= 3;\\ $r == 3
....
> php -r '$arr=array(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8);$r=0;foreach($arr as $v)$r^=$v;var_dump($r);'zerkms
Потестил ваш код. Почитал про побитовые операторы. Хоть убей не пойму в чём его суть. var_dump($r) возвращает 5085 что не соответствует не одному из элементов массива.
то же самое как += итдИ что значит ^= комбинация исключающего или и оператора присвоить.
http://ru.wikipedia.org/wiki/Сложение_по_модулю_2В чём дело? Помогите разобраться или дайте ссылку с теоретическим материалом.
Сделал такой же тест с маленьким массивом всё работает норм. Я формировал массив вот такты уверен что выполняешь условие задачи в плане того что должно быть в массиве?
$arr=array();
$n=0;
$sw=1;
for($i=0;$i<=10001;$i++){
$arr[]=$n;
if($n==84)$n++;
else{
if($sw==2){
$n++;
$sw=0;
}
$sw++;
}
}
// Первый вариант
$arr=array_count_values($arr);
$num=array_search(1,$arr);
echo $num;
//Второй вариант
sort($arr);
for($i=0;$i<count($arr);$i+=2){
if($arr[$i]!=$arr[$i+1]){echo 'Нашёл!!! это число = '.$arr[$i];break;}
}
Это надо переварить))то же самое как += итд
чушь$r=0;
$r ^= 0;\\ $r == 0
$r ^= 1;\\ $r == 1
$r ^= 2;\\ $r == 2
$r ^= 3;\\ $r == 3
Ну да это выдаст если весь код сразу запустить просто выразился неверно. А комменты так поставил потому что код писал сразу в форму.) Не разу так делать не пробовал думал так можно.комментарии странные. не те слеши.
а значения неверные.
0, 1, 3, 0 должно было быть.
Да точно с нечётными числами получается два неповторяющихся числа, и поэтому работают те два варианта)у тебя неправильно формируются исходные данные, при определнных параметрах ты нарушаешь условие задачи инфа 100%