Рубрики

Алгоритмы | Битовые алгоритмы | Вопрос 1

Что является возвращаемым значением следующей функции для arr [] = {9, 12, 2, 11, 2, 2, 10, 9, 12, 10, 9, 11, 2}, а n — размер этого массива.

int fun(int arr[], int n)

{

    int x = arr[0];

    for (int i = 1; i < n; i++)

        x = x ^ arr[i];

    return x;

}

(А) 0
(Б) 9
(С) 12
(D) 2

Ответ: (Б)
Объяснение: Обратите внимание, что 9 — единственный элемент с нечетными вхождениями, все остальные элементы имеют четные вхождения.

Если во входном массиве есть все элементы с четными вхождениями, кроме одного, то функция возвращает единственный элемент с нечетными вхождениями. Обратите внимание, что XOR элемента с самим собой приводит к 0 и XOR 0 с числом x равно x.

Попробуйте следующую полную программу.

# include <iostream>
using namespace std;

int fun(int arr[], int n)
{
    int x = arr[0];
    for (int i = 1; i < n; i++)
        x = x ^ arr[i];
    return x;
}

int main()
{
  int arr[] = {9, 12, 2, 11, 10, 9, 12, 10, 9, 11, 2};
  int n = sizeof(arr)/sizeof(arr[0]);
  cout << fun(arr, n) << endl;
  return 0;
}

Тест на этот вопрос

Рекомендуемые посты:

Алгоритмы | Битовые алгоритмы | Вопрос 1

0.00 (0%) 0 votes