Как я могу сделать этот вопрос C ++, используя оператор XOR для 2 или более цифр - PullRequest
0 голосов
/ 21 сентября 2018

XOR работает нормально для однозначных входов, но полностью запутывается при использовании номера из 2 или более цифр.Как я все еще могу сделать эту программу, используя XOR?

Это в основном вопрос:

Найдите недостающее число

Вам дан список из n-1 целых чисел иэти целые числа находятся в диапазоне от 1 до n.В списке нет дубликатов.Одно из целых чисел отсутствует в списке.Напишите эффективный код, чтобы найти пропущенное целое число.

Моя программа:

#include<iostream>

using namespace std;

int main(void)
{
    int n; //number of elements

    cout << "Enter the number of elements : ";
    cin >> n;

    //Declaring array
    int arr[n-1];

    //Taking input
    for(int i = 0; i<n-1; i++)
    cin >> arr[i];

    //printing array
    cout << "\nElements are :";
    for(int i = 0; i<n-1; i++)
    cout << " " << arr[i];

    //Declaring elements to take XOR
    int x1 = arr[0]; // first element of array
    int x2 = 1; //first element in natural number series i.e 1,2,3,4...

    //taking XOR of all elements of the given array
    for(int i = 1; i<n-1; i++)
    x1 ^= arr[i];

    //taking XOR of all the natural numbers till 'n'
    for(int i = 2; i<arr[n-1]; i++)
    x2 ^= i;

    //Finally printing the output by taking XOR of x1 and x2
    //because same numbers will be removed since (A^A) = 0 also (A^0) = A
    cout << "\nMissing number : " << (x1^x2) << endl;

    return 0;
}

Приведенная выше программа не работает для ввода ниже:

10
1 2 3 4 5 6 7 8 10

1 Ответ

0 голосов
/ 21 сентября 2018

Ваши циклы неверны, вы можете изменить на:

//Declaring elements to take XOR
int x1 = 0; // for element of array
int x2 = 0; // for natural number series i.e 1,2,3,4...

//taking XOR of all elements of the given array
for (int i = 0; i < n-1; i++)
    x1 ^= arr[i];

//taking XOR of all the natural numbers till 'n'
for (int i = 1; i != n + 1; i++)
    x2 ^= i;

Обратите внимание, что диапазон натуральных чисел больше, чем размер arr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...