Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2016, 23:25   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Интересно, а сколько в реальности?
Их всего то 79, если 0,78 и 78,0 за разные считать. Если не считать, то 40. А уж подходящих под условие гораздо меньше
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.01.2016, 23:31   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
PS: Попытался скачать программу от min@y™, но мой 7z ругается на то, что не поддерживает формат упаковки exe-шника, а распакованная программа не запускается - Это не приложение для Win
да вы задолбали! неужели влом потратить пару минут на обновление архиватора?
Ну чо мне, sfx-архивы, штоль, выкладывать??!

177.jpg
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 30.01.2016 в 23:36.
min@y™ вне форума Ответить с цитированием
Старый 31.01.2016, 02:13   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

И всё-таки это ЖЖЖЖЖ неспроста!
Закономерность есть, 100 пудово.



Математики на ресурсе есть? А ну-ка сбацайте формулу пассажиру!

178.jpg
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 31.01.2016 в 02:22.
min@y™ вне форума Ответить с цитированием
Старый 31.01.2016, 10:37   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Хм, мне кажется, что ответ для числа N = "abcd...", это "(a+1)*(b+1)*(c+1)*(d+1)*...".
Для одноразрядных и двухразрядных чисел это очевидно выводится. Для трехразрядных попробовал вывести и забил
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 31.01.2016, 12:26   #15
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
N = "abcd...", это "(a+1)*(b+1)*(c+1)*(d+1)*...".
как? если по определению имеет место быть "a + b + c + d + ..."

думаю в рамка этой задачи число полезно хранить не как int, а как

Код:
int j[100], N_j[100];

void inc(int * result) {
    for (int i(0);i<100;i++) {
        if (++result[i] < 10) break;
        else result[i] = 0;
    }
}

void dec(int * result) {
    for (int i(0);i<100;i++) {
        if (--result[i] < 0) result[i] = 9;
        else break;
    }
}

bool leq(const int * a, const int * b) {
    bool result(true);
    int ac(0), bc(0);

    for (int i(99);(i>=0) && (a[i] == 0);i--, ac++);
    for (int i(99);(i>=0) && (b[i] == 0);i--, bc++);

    if (ac <= bc) {
        for (int i(99-ac);i>=0;i--) {
            if (b[i] > a[i]) break;
            if (a[i] > b[i]) {
                result = false;
                break;
            }
        }
    }

    return result;
}

int summm(const int * chislo) {
    int result(0);
    for (int i(0);i<100;i++) result += chislo[i];
    return result;
}
тогда решение влоб, видется таким

Код:
int sum_N(0), counter(0);

for (unsigned int i(0);i<100;i++) j[i] = 0;
sum_N = summm(N_j);

for (;leq(j, N_j);) {
    if ((summm(j) + summm(N_j)) == sum_N) {
        counter++;
    }

    inc(j);
    dec(N_j);
}
// знаю, что тут про паскаль, но паскаль я уже давно забыл

Последний раз редактировалось f.hump; 31.01.2016 в 13:41. Причина: подправил leq
f.hump вне форума Ответить с цитированием
Старый 31.01.2016, 12:36   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
думаю в рамка этой задачи число полезно хранить не как int
и как это поможет увеличить скорость работы-то? ведь это и есть первоочередная задача.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 31.01.2016, 12:46   #17
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

ну, у меня нет сомнений в том, что хранение числа в любом другом виде, в рамках этой задачи, будет работать медленнее, по той простой причине, что будет постоянная необходимость определенея разрядов (цифр) числа.
ну, или я чего-то тут не пониманию.

также думаю, что мое решение будет быстрее решения тс, потому что в моем нет всяких "length, str, copy .." смысла которых я не понял.

Последний раз редактировалось f.hump; 31.01.2016 в 12:56.
f.hump вне форума Ответить с цитированием
Старый 31.01.2016, 13:19   #18
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
и как это поможет увеличить скорость работы-то? ведь это и есть первоочередная задача.
Нет ну, не обязательно увеличивать скорость той программы, т.к. это в любом случае не самый простой способ. Проще использовать другой метод, не знаю какой.
Читать число лучше не числовым типам данных, а строковым, т.к. в любом случае число в диапазоне от 10^10 до 10^100 не влезет в числовой тип данных.
То есть читать число как строку, по символам преобразовать в числа, и запихнуть в массив(максимум сто символов для массива). Оттуда подсчитать сумму цифр числа, а дальше не знаю.
dimon_snake вне форума Ответить с цитированием
Старый 31.01.2016, 13:32   #19
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
а дальше не знаю.
а дальше сравнить.
я пример для кого написал-то? алгоритм (для 32-битных целых) внутри.
но это просто пример для оценки времени брутфорса.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 31.01.2016, 13:33   #20
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

min@y™
Цитата:
да вы задолбали! неужели влом потратить пару минут на обновление архиватора?
Вы уж простите, поздний вечер и ...
Спасибо за подсказку. Обновил, все Ок.

По поводу моей версии.
Следовало учесть, что пара начинает повторяться после того, как первая цифра первой пары стала больше половины.
Для ранее приведённого числа - 78 первая цифра одной из пар меняется только до 3. Т.о. получим: по первой цифре 4-е комбинации и по второй - 9. Т.е. 36 пар. Поскольку комбинация 78 и 00 не считается, то всего 35 пар, что совпадает с результатом программы от min@y™.

min@y™, либо я что-то так и не до понял, либо ...
Так, для числа: 47 программа не дает пары 23 и 24.

Как-то так, ...

PS: Воткнул число 345. По первой цифре [3/2] = 1. Т.е. 2-е комбинации.
По второй цифре от 0 до 4 --> 5 комбинаций. По последней цифре ещё 6 комбинаций. Результат: 2 * 5 * 6 - 1 = 59. Это совпадает с выводом программы от min@y™.
Как-то так, ...

Последний раз редактировалось ViktorR; 31.01.2016 в 13:44.
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как уменьшить время работы программы 22hope22 C# (си шарп) 9 26.05.2013 21:41
VS 2010 - как поменять текст у кнопки во время работы программы, из .cpp файла? MrRockchip Общие вопросы C/C++ 3 21.02.2011 22:44
Как сократить время выполнения макроса? Алексей11111 Microsoft Office Excel 11 01.12.2009 20:04
Как узнать время работы программы в паскаль? bullvinkle Помощь студентам 2 26.12.2008 11:20
Как сократить время? МАКРОС! jungo Microsoft Office Excel 17 01.05.2008 12:13