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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
SaULeR
0 / 0 / 1
Регистрация: 23.06.2014
Сообщений: 31
#1

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

23.06.2014, 15:11. Просмотров 884. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 15:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как уменьшить время работы программы? (C++):

Как уменьшить время выполнения программы? - C++
Помогите пожалуйста сократить время выполнения программы. Работает за 5.008 сек, а должна за 1 сек. Вот код: #include &lt;iostream&gt; ...

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

Как сократить время работы программы?! - C++
Нужно сократить время работы программы по вычислению чисел Фибоначчи: Вот мой код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

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

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

Как записать адрес в указатель во время работы программы - C++
Нужно чтобы пользователь ввел адрес в сам указатель: int *ptr; cin &gt;&gt; ptr; error C2678: бинарный &quot;&gt;&gt;&quot;: не найден оператор,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,961
Записей в блоге: 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
Модератор
Эксперт С++
1809 / 1166 / 226
Регистрация: 16.05.2013
Сообщений: 3,070
Записей в блоге: 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.
Результат
В единственной строке выведите минимальное количество литров топлива, округлённое вверх.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,961
Записей в блоге: 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
Эксперт .NET
5888 / 4785 / 633
Регистрация: 10.07.2011
Сообщений: 14,405
Записей в блоге: 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:34
Привет! Вот еще темы с ответами:

Как измерить время работы программы по сортировке массива? - C++
Общая схема программы Х выглядит следующим образом. а. Выбрать очередной размер массива исходных данных. б. Заполнить массив...

подскажите, как можно сохранить переменную, вводимую во время работы программы после ее закрытия - C++
допустим есть переменная a ... int a; cin&gt;&gt;a; ... при повторном открытии программы переменная нигде не сохранится. как ее...

Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы - C++
1. Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы...

Время работы программы - C++
Здорова! Бывает в некоторых задачах нужно сравнить производительность программ, то есть время работы той или иной программы. Как их...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.06.2014, 17:34
Ответ Создать тему
Опции темы

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