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

Как можно сделать программу быстрей? - C++

Восстановить пароль Регистрация
 
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 15:44     Как можно сделать программу быстрей? #1
Не могли бы показать как использовать динамическое распределение c помощью Free i Calloc
Код
#include <iostream>
#include <cstring>

using namespace std;

int main(){
  int N,M,a=0,b=0,c=0,d=0,e=0,f=0,g=0,j=0,sum=0,sum2=0,k=0;
  cin>>N>>M;
  for(int i=N;i<=M;i++){
    a=i/10000000;
      b=(i/1000000)%10;
    c=(i/100000)%10;
    d=(i/10000)%10;
    e=(i/1000)%10;
    f=(i/100)%10;
    g=(i/10)%10;
    j=(i/1)%10;
    
  sum=a+b+c+d;
  sum2=e+f+g+j;
    
    if(sum==sum2)
      k++;
  }
  cout<<k;
  return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2011, 15:44     Как можно сделать программу быстрей?
Посмотрите здесь:

Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода C++
Как можно сделать программу более компактнее C++
Почему код на С++ работает быстрей C++
Как можно сделать что бы в консольном окне можно было вызвать контекстное меню как в win cmd? C++
C++ как можно сделать покрасивее?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.11.2011, 15:48     Как можно сделать программу быстрей? #2
Цитата Сообщение от Busterr Посмотреть сообщение
Как можно сделать программу быстрей?
что программа делает?

Добавлено через 20 секунд
Цитата Сообщение от Busterr Посмотреть сообщение
Не могли бы показать как использовать динамическое распределение пью Free i CallocFree i Calloc
а зачем?
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 15:56  [ТС]     Как можно сделать программу быстрей? #3
это задача про счастливый билет, 10000000 ≤ M < N ≤ 99999999, я ввожу два числа программа находит количество счастливых билетов.
Не могли бы показать как использовать динамическое распределение пью Free i CallocFree i Calloc
а зачем?
Потому что если я ввожу 10000000 i 99999999 программа слишком долго считает, а Free i Calloc единственное что я проходил.
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
01.11.2011, 16:06     Как можно сделать программу быстрей? #4
Цитата Сообщение от Busterr Посмотреть сообщение
Не могли бы показать как использовать динамическое распределение c помощью Free i Calloc
C++
1
2
3
4
5
// создаем указатель нужного типа
char *ptr;
 
// Выделяем динамическую память соответствующего типа и нужного кол-ва
ptr = ( char* )calloc( 100,sizeof( char ));
С ptr работаем как с массивом. Как только данный массив нам не нужен - освобождаем память:
C++
1
free( ptr );
Добавлено через 3 минуты
Цитата Сообщение от Busterr Посмотреть сообщение
Потому что если я ввожу 10000000 i 99999999 программа слишком долго считает, а Free i Calloc единственное что я проходил.
Хмм... а причем здесь "долго считает" и Free, Calloc ?
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 16:17  [ТС]     Как можно сделать программу быстрей? #5
Я не понял, можно поподробнее?
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
01.11.2011, 16:44     Как можно сделать программу быстрей? #6
DELETED.
Не прально написал
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 16:47  [ТС]     Как можно сделать программу быстрей? #7
Mustik, иди вверх и посмотри мое решение, потом посмотри название топика.

 Комментарий модератора 
С формулировками поаккуратнее. На первый раз устное предупреждение.
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
01.11.2011, 16:56     Как можно сделать программу быстрей? #8
имхо, тут и оптимизировать нечего

Добавлено через 5 минут
Цитата Сообщение от Busterr Посмотреть сообщение
Mustik, иди вверх и посмотри мое решение, потом посмотри название топика.
Ну, если ты такой умный, то, зачем у нас тупых спрашивать.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.11.2011, 16:57     Как можно сделать программу быстрей? #9
Цитата Сообщение от Busterr Посмотреть сообщение
это задача про счастливый билет, 10000000 ≤ M < N ≤ 99999999, я ввожу два числа программа находит количество счастливых билетов.
Есть у меня подозрение, что эта задача нерешаема перебором. От 10^7 до 10^8 неслабый такой цикл получиться. Скорее это задача на комбинаторику. Хотя могу ошибаться.
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 17:01  [ТС]     Как можно сделать программу быстрей? #10
Diagon, вы имеете ввиду что у меня не правильное решение?
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
01.11.2011, 17:12     Как можно сделать программу быстрей? #11
Ты бы сначала вник, что ты написал:
Цитата Сообщение от Busterr Посмотреть сообщение
это задача про счастливый билет, 10000000 ≤ M < N ≤ 99999999, я ввожу два числа программа находит количество счастливых билетов.
и
Цитата Сообщение от Busterr Посмотреть сообщение
C++
1
for(int i=N;i<=M;i++)
ничего не видишь?

Добавлено через 3 минуты
Ну если все-таки твой код правильный и ты описался, а все-таки условие 10000000 <= N < M <= 99999999 должно быть такое, то твой цикл заменяется вот таким вот:
C++
1
2
3
4
5
6
7
8
9
10
11
    for( int i = N; i <= M ; ++i )
    {
                a = i / 10000000;
        b = i % 10;
 
        sum = a + b * 3;
        sum2 = b * 4;
    
        if(sum == sum2)
            k++;
        }
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 17:12  [ТС]     Как можно сделать программу быстрей? #12
Mustik, иди вверх и посмотри мое решение, потом посмотри название топика.
Ну, если ты такой умный, то, зачем у нас тупых спрашивать.
Я не говорил что ВЫ тупые, я спросил тебя, я прошу помощи и не думаю что тебе стоило писать то,что ты удалил. Не люблю когда тот, кто считает себя умнее начинает ехидничать, а не помогать.
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
01.11.2011, 17:52     Как можно сделать программу быстрей? #13
Цитата Сообщение от Busterr Посмотреть сообщение
Я не говорил что ВЫ тупые, я спросил тебя, я прошу помощи и не думаю что тебе стоило писать то,что ты удалил. Не люблю когда тот, кто считает себя умнее начинает ехидничать, а не помогать.
Выше написанный код сча доведу до ума. Где-то промахнулся. Писал на вскидку.

Добавлено через 35 минут
Сорри, ничего не придумал. Проверил разные варианты, получается примерно тоже самое по времени.
Около 7-8 секунд где-то.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2011, 17:59     Как можно сделать программу быстрей?
Еще ссылки по теме:

C++ Напишите программу! Сделал скин экрана. Самым простым способ (без массивов). Как можно быстрей
C++ Можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву
C++ Как можно сделать авторитизацию из C++ приложения?

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

Или воспользуйтесь поиском по форуму:
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
01.11.2011, 17:59  [ТС]     Как можно сделать программу быстрей? #14
Хотя бы что -то скиньте я подумаю
Yandex
Объявления
01.11.2011, 17:59     Как можно сделать программу быстрей?
Ответ Создать тему
Опции темы

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