Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 3
1

Найти количество различных по модулю чисел среди элементов массива

10.01.2020, 17:47. Показов 3372. Ответов 10

Author24 — интернет-сервис помощи студентам
Здравствуйте! Не могу решить задачу. Этот код проходит все проверки и работает максимум 40 мс., но в 4 тестах он работает по 2 секунды, а при попытке уменьшения времени путём уменьшения размера массива numbers принудительно до 400 000 (в задаче указано, что он может быть до 2 000 000) выдает ошибку выполнения (программа вернула ненулевой код).
Суть задачи в том чтобы вывести сколько есть уникальных модулей чисел в строке. Если попробовать заменить float на int, происходит тоже, что и при уменьшении размера массива.
К слову если уменьшать размер массива, например, до 700 000, то все равно выдает именно ошибку времени, а не выполнения (Лимит времени - 1 секунда).

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
            int kol = 0;
            int uniq = 1;
            cin >> kol;
            float numbers[kol];
            for (int i = 0; i < kol;i++) {
                cin >> numbers[i];
            }
                if (numbers[0] < 0){
                    numbers[0] = abs(numbers[0]);
                }
            for(int i = 1; i < kol;i++){
                if (numbers[i] < 0){
                    numbers[i] = abs(numbers[i]);
                }
                for (int ii = 0; ii < i; ii++) {
                    if(numbers[ii] == numbers[i]){
                        uniq--;
                        break;
                    }
                }
                uniq++;
            }
            cout << uniq << endl;
            return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2020, 17:47
Ответы с готовыми решениями:

Найти количество различных чисел среди элементов массива
Дан массив x содержащий n элементов. Найти количество различных чисел среди элементов этого массива

Найти количество различных чисел среди элементов массива
Здравствуйте! Есть задача, не могу понять условия. Дан массив x: array of integer. Найти коли-...

Найти количество различных чисел среди элементов упорядоченного массива
Дан, упорядоченный массив по возрастанию. Найти кол-во различных числе среди элементов массива.

Дан одномерный целочисленный массив из n элементов. Найти количество различных чисел среди элементов этого массива
Дан одномерный целочисленный массив из n элементов. Найти количество различных чисел среди...

10
Заблокирован
10.01.2020, 18:06 2
Что делает этот кот?
Кликните здесь для просмотра всего текста
За такое форматирование надо руки отрывать.
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2020, 18:17 3
Цитата Сообщение от psy-radiation Посмотреть сообщение
что он может быть до 2 000 000
Размер стека не резиновый)
0
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 3
10.01.2020, 18:20  [ТС] 4
Цитата Сообщение от Verevkin Посмотреть сообщение
Что делает этот кот?
При копировании так вышло, просто много чего делал пока не мог понять почему не проходит.
Входные:
6
-3 -2 0 3 4 5
Оно смотрит меняет все отрицательные числа на положительные.
После проверяет были ли до этого такие же числа, если нет то отнимает 1 от их количества, потому что каждый круг добавляется 1 для того, чтобы не делать лишнюю проверку (хотел так с экономить на ресурсах).

Добавлено через 1 минуту
Цитата Сообщение от Azazel-San Посмотреть сообщение
Размер стека не резиновый)
Первая строка содержит количество чисел n (n ≤ 2 * 10 в степени 6). Вторая строка содержит n целых чисел, отсортированных по возрастанию. Массив может содержать одинаковые элементы.
Так написано в условиях, может я чего-то не понимаю?
0
Заблокирован
10.01.2020, 18:25 5
Цитата Сообщение от Azazel-San Посмотреть сообщение
Размер стека не резиновый)
Какой размер стека? Ты посмотри - там массив вручную вводится. 2000000 значений ввести за 2 секунды немного не получается, похоже...

Добавлено через 3 минуты
Цитата Сообщение от psy-radiation Посмотреть сообщение
Оно смотрит меняет все отрицательные числа на положительные.
После проверяет были ли до этого такие же числа, если нет то отнимает 1 от их количества, потому что каждый круг добавляется 1 для того, чтобы не делать лишнюю проверку (хотел так с экономить на ресурсах).
У меня есть знакомый один, дворником работает, родом из города-героя Куляба. Он очень чудно по-русски разговаривает, но я его довольно сносно понимаю.



А тебя - нет.
Оригинал условия задачи дай.
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2020, 18:25 6
Цитата Сообщение от Verevkin Посмотреть сообщение
2000000 значений ввести за 2 секунды
Там же не человек вводит?
Цитата Сообщение от psy-radiation Посмотреть сообщение
К слову если уменьшать размер массива
Так размер массива кто задает Вы или это в тесте один из входных параметров (размер массива)?
0
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 3
10.01.2020, 18:27  [ТС] 7
Цитата Сообщение от Verevkin Посмотреть сообщение
Какой размер стека? Ты посмотри - там массив вручную вводится. 2000000 значений ввести за 2 секунды немного не получается, похоже...
Изначально я не задаю размер - он задается данными которые идут от проверщика e-olymp.

Добавлено через 1 минуту
Цитата Сообщение от Verevkin Посмотреть сообщение
Оригинал условия задачи дай.
Задан отсортированный массив целых чисел. Найдите количество различных по модулю чисел среди элементов массива.
Входные
6
-3 -2 0 3 4 5
Выходные
5
0
6106 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
10.01.2020, 18:27 8
Лучший ответ Сообщение было отмечено psy-radiation как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream> 
#include <set>
#include <iterator>
 
int main()
{
    int col;
    std::cin >> col;
 
    struct comp
    {
        bool operator()(int lh, int rh)
        {
            return std::abs(lh) < std::abs(rh);
        };
    };
 
    std::cout << std::set<int, comp>{std::istream_iterator<int>{std::cin}, {}}.size();
}
1
Заблокирован
10.01.2020, 18:29 9
Цитата Сообщение от Azazel-San Посмотреть сообщение
Там же не человек вводит?
А кто? Робот Бендер?

Найти количество различных по модулю чисел среди элементов массива
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2020, 18:30 10
Цитата Сообщение от Verevkin Посмотреть сообщение
А кто? Робот Бендер?
Может)
Цитата Сообщение от psy-radiation Посмотреть сообщение
данными которые идут от проверщика e-olymp
0
DrOffset
10.01.2020, 19:15     Найти количество различных по модулю чисел среди элементов массива
  #11

Не по теме:

Цитата Сообщение от Verevkin Посмотреть сообщение
А кто? Робот Бендер?
Можно ввести каким-нибудь
Bash
1
cat large_file.txt | myprog

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2020, 19:15

Массив: Найдите количество различных по модулю чисел среди элементов массива
Задан отсортированный массив целых чисел. Найдите количество различных по модулю чисел среди...

Найти количество различных чисел среди элементов массива
Дан массив x содержащий n элементов. Найти количество различных чисел среди элементов этого массива

Найти количество различных чисел среди элементов массива
Дан массив целых чисел x. Найти количество различных чисел среди элементов этого массива. (Число...

Найти количество различных чисел среди элементов массива
Дан массив x содержащий n элементов. Найти количество различных чисел среди элементов этого массива

Найти количество различных чисел среди элементов этого массива
Дан одномерный целочисленный массив из n элементов. Найти количество различных чисел среди...

Найти количество различных чисел среди элементов данного массива
Примечания: - все программы с массивами должны содержать отдельные подпрограммы для ввода (и,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru