Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 25.05.2019
Сообщений: 1
1

Не проходит по времени. Надо написать код который будет работать меньше за o(n^2). Что делать?

25.05.2019, 21:37. Показов 964. Ответов 4
Метки нет (Все метки)

Национальный парк штата Q недавно приобрел прекрасную березовую аллею, состоящую из n деревьев. Каждое дерево имеет высоту Hi.

International Classification of national parks is a list of the most beautiful nature reserves in the world. Used to rank parks such a thing as distinctiveness which is understood as the number of pairs (i, j), for which the observed ratio of Hi mod Hj = k, where k is a special number, which is selected by the Expert Council of the international organization of national parks.

What distinctiveness has national park state Q?

Входные данные

The first line has two positive integers n and k (1 ≤ n ≤ 105, 0 ≤ k ≤ 106) - the number of trees in the national park and a special number of the advisory council, respectively.

The second line has n numbers Hi (1 ≤ Hi ≤ 106) - the height of the trees in the park.

Выходные данные

In the single line print Q national park distinctiveness.
Входные данные #1
5 1
1 2 3 4 5
Выходные данные #1
8


Вот мой код:
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
#include <iostream>
using namespace std;
 
int main() {
    int n, k;
    cin >> n >> k;
    
    int x[n];
    for (int i = 0; i < n; i++) {
        cin >> x[i];
    }
    
    int counter = 0;
    for (int i = 0; i < n; i++) {
        int q = x[i] - k;
        for (int j = 0; j < n; j++) {
            if (q % x[j] == 0 && x[j] != 1) {
                //cout << x[i] << " " << x[j] << endl;
                counter++;
            }
        }
    }
    cout << counter;
    return 0;
}
Не проходит по времени + неправильный ответ в некоторых тестах. Что я не так делаю? Помогите, пожалуйста, кто может!!!
Вопрос жизни и смерти студента !

https://www.e-olymp.com/ru/problems/8678
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2019, 21:37
Ответы с готовыми решениями:

Скрипт, который будет работать на сервере через определенные промежутки времени
Подскажите, пожалуйста как его написать. В общем нужен скрипт, который будет работать каждый час,...

Windows Live CD - что надо делать, чтобы работать с ним?
Скачала Лайв СД с ХР потом уже поглядела...Что какая-то четвёртая часть... Скачался архивом.......

Написать макрос для Word, который будет делать автосумму как в Excel
Здравствуйте, помогоите пожалуйста написать макрос для Word, который будет делать автосумму как в...

Разбираюсь с outlook. что не так? код не мой но по сути должен делать что мне надо, но он ничего не делает
Function ListOLInbox() 'спиcок писем в папке &quot;входящие&quot; Dim OL_App As Outlook.Application Dim...

4
10 / 7 / 3
Регистрация: 14.12.2018
Сообщений: 82
25.05.2019, 21:48 2
В названии темы хотя бы суть вопроса описывай, хоть как то.
А то правило 5.4 немного противоречит твоему названию.
1
6467 / 4399 / 2519
Регистрация: 18.12.2017
Сообщений: 13,752
26.05.2019, 01:14 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
    int n, k, count=0;
    cin >> n >> k;
 
    int H[n]; 
    
    for (int i = 0; i < n; i++)
        cin >> H[i];
        
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) 
    if (H[i]%H[j]==k) count++;     
 
    cout << count;
 
system("pause");
return 0;
}
0
3412 / 2771 / 751
Регистрация: 25.03.2012
Сообщений: 10,073
Записей в блоге: 1
26.05.2019, 01:55 4
Цитата Сообщение от Yetty Посмотреть сообщение
int H[n];
C++
1
int H[105];//в объявлении должна быть константа
1
6467 / 4399 / 2519
Регистрация: 18.12.2017
Сообщений: 13,752
26.05.2019, 02:12 5
Kuzia domovenok, конечно. только динамический. исправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main()
{
    int n, k, count=0;
    cin >> n >> k;
 
    int*H = new int[n]; 
    
    for (int i = 0; i < n; i++)
        cin >> H[i];
        
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) 
    if (H[i]%H[j]==k) count++;     
 
    cout << count;
    
    delete[]H;
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2019, 02:12

Написать макрос который будет работать в виде теста и в конце выводить результат
Здравствуйте, есть задача написать макрос который будет работать в виде теста и в конце выводить...

Будет ли работать сценарий Perl на win32 под IIS и что для этого надо?
Подскажите будет-ли работать сценарий Perl на win32 под IIS и что для этого надо?

как написать цикл который будет проходить по всем элементам массива и если разница между двумя его элементами меньше зад
как написать цикл который будет проходить по всем элементам массива и если разница между двумя его...

Написать код который будет менять цвет надписи как светофор
Очень срочно нужно HTML

Можно ли написать код, который будет сам решать любое выражение?
Можно ли написать код, который будет сам решать любое выражение? Выражения типа 54+(45-67)/(4*9)......

Нужно написать код который будет загружать xml базу в паскаль
помгите пожалуйста , нужно написать код который будет загружать xml базу в паскаль


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.