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

Как уменьшить время работы программы?

23.06.2014, 15:11. Просмотров 4536. Ответов 15
Метки нет (Все метки)

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
#include<iostream>
using namespace std;
int main()
{
    int a,m,n;
    double d,o,w;
 
    cin>>n>>m;
    a=0;
    w=0;
    o=0;
    bool q=true;
    while(q){
        a++;
        d=m/(a << 1-1);
    if (w+d>=n){
        q=false;
    }
      w=w+d;
      o=o+m;
    }
 
  d=n-w;
  o=o+d*(a << 1-1);
  cout<<(abs(o+0.49999999999));
    return 0;
}

выполняется за 0.531 примерно надо чтобы было не более 0.5
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2014, 15:11
Ответы с готовыми решениями:

Написал программу для возведения числа X в степень N по модулю P. Как можно уменьшить макс. время работы программы?
#include &lt;iostream&gt; using namespace std; int main() { int c = 1; int x, n, p; cin &gt;&gt; x &gt;&gt;...

Как уменьшить время выполнения программы?
Помогите пожалуйста сократить время выполнения программы. Работает за 5.008 сек, а должна за 1 сек....

Многопоточная быстрая сортировка (уменьшить время работы)
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;ctime&gt; #include&lt;vector&gt;...

Уменьшить время выполнения программы
#include &lt;iostream&gt; using namespace std; int main() { int n; cin &gt;&gt; n; char...

15
Котовчанин
940 / 480 / 200
Регистрация: 16.02.2010
Сообщений: 3,333
Записей в блоге: 37
23.06.2014, 15:14 2
Попробуйте еще убрать using namespace std; и подописывать std к выводу и вводу. Не знаю поможет ли.

Добавлено через 10 секунд
А что за задание хоть?
0
30 / 30 / 32
Регистрация: 21.06.2014
Сообщений: 81
23.06.2014, 15:22 3
Это АСМ задача ? Если так, то нужно видеть условие, чтобы помочь.
0
Эксперт С++
1902 / 1247 / 357
Регистрация: 16.05.2013
Сообщений: 3,260
Записей в блоге: 6
23.06.2014, 15:22 4
Как бы 0.016 сек.
0
Миниатюры
Как уменьшить время работы программы?  
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 33
23.06.2014, 15:22  [ТС] 5
Наш джип находится в пустыне и должен достичь точки, находящейся на расстоянии N километров от него. Рельеф сложный, машина старая, и похоже, что топливо вытекает, так что на каждый пройденный машиной километр тратится один литр топлива. В джипе есть канистры, общая ёмкость которых вместе с бензобаком составляет M литров (M < N). В начале дороги есть неограниченное количество топлива, а повсюду в пустыне есть пустые цистерны, в которых джип, проезжая, может оставить неограниченное количество топлива.
Напишите программу, которая находит минимальное количество топлива в литрах, которое необходимо для достижения заданной точки.
Исходные данные
Два целых числа, N и M, записаны в единственной строке ввода. Известно, что 5M ≥ N > 0 и N < 32000.
Результат
В единственной строке выведите минимальное количество литров топлива, округлённое вверх.
0
Котовчанин
940 / 480 / 200
Регистрация: 16.02.2010
Сообщений: 3,333
Записей в блоге: 37
23.06.2014, 15:27 6

Не по теме:

Ilot, это каких таких котЭ Вы гроза?

0
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
23.06.2014, 15:41 7
убери if и поставь в условие выхода из цикла
0
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 33
23.06.2014, 15:48  [ТС] 8
Ilot, на АСМ автоматическая проверка пишет 531

Добавлено через 2 минуты
luciys, тогда на АСМ выдает не правильный ответ

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
    while(w+d>=n){
        a++;
        d=m/(a << 1-1);
    
      w=w+d;
      o=o+m;
    }
0
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
23.06.2014, 15:59 9
SaULeR, не понимаю условия задачи
постцикл ?
C++
1
2
3
4
5
6
do{
    a++;
    d=m/(a << 1-1);
    w=w+d;
    o=o+m;
} while(w+d>=n);
а для while() {}
нужно инициализировать d = m;, а после цикла, если я всё правильно понимаю, вычислить дополнительно a++; d=m/(a << 1-1); w=w+d; и o=o+m;
кинул бы лучше ссыль на задачу, с тестами )
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.06.2014, 16:16 10
SaULeR, не думаю, что сильно поможет:
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 a = 0, m, n;
    double d, o, w;
 
    cin >> n >> m;
    for (a = 1, w = 0, o = 0;; a++){
        d = m / ((a << 1) - 1);
        if (w + d >= n){
            break;
        }
        w += d;
        o += m;
    }
 
    d = n - w;
    o += d*((a << 1) - 1);
    cout << (abs(o + 0.49999999999));
    return 0;
}
и зачем такое извращение, не подскажете? Тем более при чем тут модуль?..
C++
1
(abs(o + 0.49999999999));
Добавлено через 1 минуту
и имена для переменных выбирайте получше.. Особенно нравится выглядывать, используется o или 0, еще нормально l, i, 1 - угадайте где что.

Добавлено через 1 минуту
C++
1
2
int l=1, o=0, I=l;
int result = l+1+I<<o+0<<l+o+1;
и теперь пробуем вкурить, что тут происходит. И не потому, что алгоритм сложный, а потому что имена хрен разберешь.

Добавлено через 6 минут
SaULeR, задача бредовая. Зачем джипу оставлять топливо в пустыне? Нужно проехать N километров, на каждый километр тратится один литр, ответ - заправляем N литров. В чем задача-то? Если в этом она и заключается, то
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main()
{
    int m, n;
    cout << "Vvedite rasstoyanie" << endl;
    cin >> n;
    cout << "Vvedite emkost kanistr" << endl;
    cin >> m;
    cout << "Nujno imet " << (int)ceil(n / (double)m) << " kanistr" << endl;
}
0
Ilot
23.06.2014, 16:38
  #11

Не по теме:

Цитата Сообщение от Тамика Посмотреть сообщение
Ilot, это каких таких котЭ Вы гроза?
Толстопуза и его шайки.

1
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 33
23.06.2014, 16:46  [ТС] 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
using namespace std;
int main()
{
    int a = 0, m, n;
    double d, o, w;
 
    cin >> n >> m;
    do{
    a++;
    d=m/((a << 1)-1);
    w=w+d;
    o=o+m;
    } while(w+d>=n);
 
    d = n - w;
    o = o + d*((a << 1) - 1);
    cout << (int(o + 0.49999999999));
    return 0;
}

теперь получаю не правильный ответ
0
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
23.06.2014, 16:59 13
SaULeR,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 #include<iostream>
using namespace std;
int main()
{
    int a = 0, m, n;
    double d, o, w;
 
    cin >> n >> m;
    do{
    a++;
    d=m/((a << 1)-1);
    w=w+d;
    o=o+m;
    } while(w<n);
 
    d = n - w;
    o = o + d*((a << 1) - 1);
    cout << (int(o + 0.49999999999));
    return 0;
}
так вроде верно, пробуй, а в твоей изначальной версии нужно было бы такое же условие ) while(w < n) {}
давно кинул бы уже ссылку, было бы проще )
0
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 33
23.06.2014, 17:29  [ТС] 14
luciys, все так же время выше положеного

Добавлено через 27 секунд
luciys, 531sec
0
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
23.06.2014, 17:34 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 #include<iostream>
using namespace std;
int main()
{
    int a = 0, m, n;
    double d, o, w;
 
    cin >> n >> m;
    do{
    a++;
    d=m/((a << 1)-1);
    w=w+d;
    } while(w<n);
 
    cout << (int(a * m + (n - w)*((a << 1) - 1); + 0.49999999999));
    return 0;
}
дай n & m на которых это время и где тестишь
0
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 33
23.06.2014, 17:42  [ТС] 16
luciys, n=1000 m=500

Добавлено через 3 минуты
cut
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2014, 17:42

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

Как сократить время работы программы?!
Нужно сократить время работы программы по вычислению чисел Фибоначчи: Вот мой код: #include...

Как подключить библиотеку во время работы программы?
Представьте ситуацию: Я прошу у пользователя ввести имя библиотеки, которая находится в одной папке...

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

Как влияет потоковый вывод на время работы программы?
Доброго времени суток! Есть код который решает задачку про Ханойские башни. В центре мира в...


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

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

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