Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
23.06.2014, 15:11     Как уменьшить время работы программы? #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
#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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 15:11     Как уменьшить время работы программы?
Посмотрите здесь:

C++ подскажите, как можно сохранить переменную, вводимую во время работы программы после ее закрытия
C++ как узнать время работы программы решения алгоритма
Как записать адрес в указатель во время работы программы C++
C++ Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы
Как сократить время работы программы?! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,537
Записей в блоге: 27
23.06.2014, 15:14     Как уменьшить время работы программы? #2
Попробуйте еще убрать using namespace std; и подописывать std к выводу и вводу. Не знаю поможет ли.

Добавлено через 10 секунд
А что за задание хоть?
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
23.06.2014, 15:22     Как уменьшить время работы программы? #3
Это АСМ задача ? Если так, то нужно видеть условие, чтобы помочь.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
23.06.2014, 15:22     Как уменьшить время работы программы? #4
Как бы 0.016 сек.
Миниатюры
Как уменьшить время работы программы?  
SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
23.06.2014, 15:22  [ТС]     Как уменьшить время работы программы? #5
Наш джип находится в пустыне и должен достичь точки, находящейся на расстоянии N километров от него. Рельеф сложный, машина старая, и похоже, что топливо вытекает, так что на каждый пройденный машиной километр тратится один литр топлива. В джипе есть канистры, общая ёмкость которых вместе с бензобаком составляет M литров (M < N). В начале дороги есть неограниченное количество топлива, а повсюду в пустыне есть пустые цистерны, в которых джип, проезжая, может оставить неограниченное количество топлива.
Напишите программу, которая находит минимальное количество топлива в литрах, которое необходимо для достижения заданной точки.
Исходные данные
Два целых числа, N и M, записаны в единственной строке ввода. Известно, что 5M ≥ N > 0 и N < 32000.
Результат
В единственной строке выведите минимальное количество литров топлива, округлённое вверх.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,537
Записей в блоге: 27
23.06.2014, 15:27     Как уменьшить время работы программы? #6

Не по теме:

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

luciys
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
23.06.2014, 15:41     Как уменьшить время работы программы? #7
убери if и поставь в условие выхода из цикла
SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
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;
    }
luciys
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;
кинул бы лучше ссыль на задачу, с тестами )
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
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;
}
Ilot
23.06.2014, 16:38
  #11

Не по теме:

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

SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
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;
}

теперь получаю не правильный ответ
luciys
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) {}
давно кинул бы уже ссылку, было бы проще )
SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
23.06.2014, 17:29  [ТС]     Как уменьшить время работы программы? #14
luciys, все так же время выше положеного

Добавлено через 27 секунд
luciys, 531sec
luciys
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 на которых это время и где тестишь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2014, 17:42     Как уменьшить время работы программы?
Еще ссылки по теме:

Время работы программы C++
Время работы программы C++
Как подключить библиотеку во время работы программы? C++

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

Или воспользуйтесь поиском по форуму:
SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
23.06.2014, 17:42  [ТС]     Как уменьшить время работы программы? #16
luciys, n=1000 m=500

Добавлено через 3 минуты
cut
Yandex
Объявления
23.06.2014, 17:42     Как уменьшить время работы программы?
Ответ Создать тему
Опции темы

Текущее время: 13:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru