0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 3
1

Задача 938 acmp. Не могу понять функцию precalc

23.12.2021, 14:26. Показов 1624. Ответов 7
Метки c++, с++ (Все метки)

Author24 — интернет-сервис помощи студентам
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 <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
int const N = 1025;
int sieve[N];
 
void precalc() {
    for (int i = 2; i <= N; ++i) {
        if (sieve[i] == 0) {
            for (int j = i; j <= N; j += i) {
                sieve[j]++;
            }
        }
    }
}
 
int main() {
    precalc();
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i];
    sort(a.begin(), a.end());
    int mx = a[0];
    for (int i = 1; i < n; ++i) {
        if (sieve[a[i]] > sieve[mx]) mx = a[i];
    }
    cout << mx << '\n';
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2021, 14:26
Ответы с готовыми решениями:

ЗАДАЧА №938 Простые числа - 2 ACMP Не могу понять функцию precalc
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; #include &lt;algorithm&gt; using namespace...

Не могу понять функцию
Есть условие задачи и её решение. В решении меня интересует вопрос , что делает функция nub в...

Задача что то понять не могу
Запрещено размещение заданий в виде картинки. Перепечатайте текстом.

Задача что то понять не могу
Запрещено размещение заданий в виде картинки. Перепечатайте текстом.

7
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 3
23.12.2021, 14:42  [ТС] 2
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 <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
int const N = 1025;
int sieve[N];
 
void precalc() {
    for (int i = 2; i <= N; ++i) {
        if (sieve[i] == 0) {
            for (int j = i; j <= N; j += i) {
                sieve[j]++;
            }
        }
    }
}
 
int main() {
    precalc();
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i];
    sort(a.begin(), a.end());
    int mx = a[0];
    for (int i = 1; i < n; ++i) {
        if (sieve[a[i]] > sieve[mx]) mx = a[i];
    }
    cout << mx << '\n';
 
    return 0;
}
Объясните пожалуйста что делает функция precalc.
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
23.12.2021, 14:49 3
i не может быть равно N. i < N надо писать.

Добавлено через 2 минуты
Если в массиве sieve находится 0, то все элементы после него +1 с шагом i.
0
2266 / 1760 / 738
Регистрация: 27.07.2012
Сообщений: 5,230
23.12.2021, 14:49 4
Цитата Сообщение от hocc74 Посмотреть сообщение
Объясните пожалуйста что делает функция precalc.
Как минимум нарывается на неопределённое поведение, когда i станет равным N.
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 3
23.12.2021, 16:01  [ТС] 5
Сайт принял код именно этот, значит может)

Добавлено через 1 минуту
Цитата Сообщение от John Prick Посмотреть сообщение
Как минимум нарывается на неопределённое поведение, когда i станет равным N.
В каком смысле неопределенное поведение?
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
23.12.2021, 16:12 6
Массивы в C++. N элемента не существует, а элементы идут от 0 до (N-1).
Пора бы уже своей головой думать.
0
2266 / 1760 / 738
Регистрация: 27.07.2012
Сообщений: 5,230
23.12.2021, 16:15 7
Цитата Сообщение от hocc74 Посмотреть сообщение
В каком смысле неопределенное поведение?
В массиве с[n] последний элемент имеет индекс n - 1. Обращение к элементу с индексом n - выход за пределы массива. Ну а неопределённое поведение потому так и называется, что может быть всё что угодно: может пройти вообще без последствий, а может всю прогу завалить.
0
111 / 74 / 39
Регистрация: 16.05.2020
Сообщений: 292
23.12.2021, 21:37 8
Задача из Школы программиста - там описание ...
0
23.12.2021, 21:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2021, 21:37
Помогаю со студенческими работами здесь

Не могу понять функцию fwrite()
Приветствую всех! Прошу объяснить почему при записи на файл структуру выходит только надпись Hello...

Не могу понять как переделать функцию
Всем привет Есть задание: Выкладываю предыдущее задание : function add(a, b) { var r...

Не могу понять, как доделать функцию
У меня есть функция capitalize, которая получает на вход строку и флаг, если флаг False, то из...

Не могу понять как делать функцию
Дано действительное число A. Для функций, графики которых представлены на рисунке вычислить...

задача на java, не могу понять как решаеться
Доход, который может получить вкладчик банка, разместив свои средства на депозите (s%) с...

Задача math, не могу понять в чем ошибки
Приветствую, в универе задали сделать задачку, написать пример с парой переменных. Записать этот...

Задача со множествами. Не могу понять как сделать
задача со множествами. не могу понять как сделать


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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