// PascalABC.NET 3.2, сборка 1353 от 27.11.2016 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println; var m:=Readinteger('Что ищем?'); var k:=a.FindAll(x->x=m).Count; Writeln('Найдено таких элементов- ',k); if k>0 then Writeln('Номер первого такого элемента- ', a.FindIndex(x->x=m)+1) end.
Пример n= 17 -46 33 -9 -22 14 -46 -6 -3 -7 -18 46 42 -40 -40 0 29 -9 Что ищем? -9 Найдено таких элементов- 2 Номер первого такого элемента- 3
Удобнее всего решать с использованием промежуточной двоичной системы, поскольку 16=2⁴, в 8=2³. В силу этого каждая шестнадцатиричная цифра изображается четырьмя битами (тетрадой), а каждая восьмеричная - тремя (триадой). Заменим неизвестные биты символом Х. 1010₁₆ = ХХХ ХХ1 010₈ Запишем изображения битов друг под другом с учетом известной нам информации. Х Х Х Х 1 0 1 0 Х Х Х Х Х 1 0 1 0 Теперь известные биты в конце чисел можно отбросить Х Х Х Х Х Х Х Х Х Очевидно, во втором (восьмеричном числе первый бит нулевой, поскольку оба числа в двоичной записи одинаковы и остается только ₂. Эти четыре бита (обозначим их IJKL) могут дать 16 комбинаций. Но требование, чтобы восьмеричное число имело три цифры, старшая из которых не может быть нулем, запрещает комбинацию IJ=00, поэтому 4 комбинации из 16 надо вычеркнуть. Останется 12.
ответ: 12 чисел.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку