Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2

Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме одного. Найдите его за линейное время.

21.02.2013, 18:22. Показов 2820. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сижу мучаюсь 30 минут, не как не могу составить алгоритм работы программы, подумывал нахождения через пары, но это очень долго..

вот задание:

Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме
одного. Найдите его за линейное время.

 Комментарий модератора 
Название темы должно отражать ее суть (хотя бы кратко о том, что внутри)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2013, 18:22
Ответы с готовыми решениями:

Задан файл целых чисел. Указать диапазон, в котором находятся его элементы
Задан файл целых чисел. Указать диапазон, в котором находятся его элементы. С файлом все понял, открываю, могу вывести элементы, но на...

В массиве целых чисел подсчитать сколько раз встречается каждое число
Здравствуйте всем задача такая: В массиве целых чисел подсчитать сколько раз встречается каждое число Program Generator; Uses Crt; ...

Создать новый список, где каждое число встречается дважды
Задан список. Создать новый список, где каждое число встречается дважды было стало –

7
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
21.02.2013, 18:37
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
сижу мучаюсь 30 минут, не как не могу составить алгоритм работы программы, подумывал нахождения через пары, но это очень долго..
вот задание:
Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме
одного. Найдите его за линейное время.
Всё оч просто. Заносите числа в массив, сортируешь, и находишь единственные(ое) значение. Данный метод подходит не только для пары чисел, но и для любого повторяющегося значения (два или больше). Вот пример работы нахождения одинаковых элементов, переделать под ваше задания не составит труда: Одинаковые элементы массива
1
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2
21.02.2013, 18:59  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm> // for sort
 
int one_numb_in_massiv(int* massiv, size_t size);
 
int main()
{
    const size_t size = 9;
    int arr[size] = {1,2,3,2,5,4,5,4,1};
 
    std::sort(arr, arr + size);
 
    std::cout << one_numb_in_massiv(arr, size) << std::endl;
 
    return 0;
}
 
int one_numb_in_massiv(int* massiv, size_t size)
{
    std::sort(massiv, massiv + size);
 
    for (int i = 0; i < size; ++i)
    {
        if(massiv[i] != massiv[i+1])
            return massiv[i];
        else
            ++i;
    }
 
    return 0;
 
}
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
21.02.2013, 19:04
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
C++
1
2
3
for (int i = 0; i < size; ++i)
{
    if(massiv[i] != massiv[i+1])
если все числа будут парные, то на последеней итерации будет выход за пределы массива.
И зачем сортировка дважды?
0
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2
21.02.2013, 19:19  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
если все числа будут парные, то на последеней итерации будет выход за пределы массива.
И зачем сортировка дважды?
хм. насчёт двойной сортировки, моя не внимательность.

насчёт выхода за приделы массива, нужно подумать.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
 
int one_numb_in_massiv(int* massiv, size_t size);
 
int main()
{
    const size_t size = 9;
    int arr[size] = {1,2,3,2,5,4,5,4,1};
 
    std::cout << one_numb_in_massiv(arr, size) << std::endl;
 
    return 0;
}
 
int one_numb_in_massiv(int* massiv, size_t size)
{
    std::sort(massiv, massiv + size);
 
    if((size % 2) == 0)
        return 0;
 
    for (int i = 0; i < size; ++i)
    {
        if(massiv[i] != massiv[i+1])
            return massiv[i];
        else
            ++i;
    }
 
    return 0;
 
}
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
21.02.2013, 19:47
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
Найдите его за линейное время.
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
std::sort(massiv, massiv + size);
быстрая сортировка работает не за линейное время

Добавлено через 3 минуты
если диапазон чисел небольшой, то за линейное время можно выполнить поиск с помощью распределяющего подсчета
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2013, 20:37
KostyaKulakov, Если диапазон не слишком велик, можно завести char *s размером в диапазон, обнулить его, а далее как-то так
C
1
2
3
 n - очередное число
if (s[n] == 2) continue;
else s[n] ++;
Потом просматриваете s, и как только встретите 1 - вот оно!
Требуемую память для массива s можно сократить в 4 раза, упаковывая 4 двухбитных значения в один байт.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.02.2013, 21:15
C++
1
2
for (int i = 0; i < arr.size(); ++i)
    answer ^= arr[i];
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2013, 21:15
Помогаю со студенческими работами здесь

Задано число х. Найдите количество его делителей, делящихся на каждое из простых чисел, на которое делится х.
УВАЖАЕМЫЕ ЭКСПЕРТЫ ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ:help::help::help: (Время: 1 сек) Пусть х — натуральное число. Назовем у его делителем, если 1...

Текстовый файл содержит несколько целых чисел. Преобразовать каждое число так, чтобы его цифры располагались в порядке убывания.
Текстовый файл содержит несколько целых чисел. Преобразовать каждое число так, чтобы его цифры располагались в порядке убывания. Вывести в...

Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++
Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры....

Количество различных чисел, каждое из которых встречается в матрице более одного раза
ребят помогите задание не получается. Сформировать случайным образом матрицу размерности 5х4 . Подсчитать количество одинаковых чисел ...

В списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного
Здравствуйте, Вы не могли бы помочь с задачей контрольной работы? &quot;Составить программу. В списке целых чисел удалить из каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru