Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 15 авг 2016, 23:52 
Не в сети
Начинающий
Зарегистрирован:
15 авг 2016, 23:37
Сообщений: 3
Cпасибо сказано: 1
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Задачка по программированию.
Дано:
Стоимость Болтов =10, Гаек=5, Шайб =0.5;
Определить количество комбинаций для общей суммы покупки в 100 рублей. При этом количество единиц товара при любой комбинации должна быть равна 100;

Ответ: Количество комбинаций = 1;
Болтов -1, Гаек -9, Шайб - 90;

Моя программа переберает весь 1030301 комбинаций из 3-ох цифр от 0 до 100, и подставляет в 2 уравнения
x + y + z = 100
(x*c1) + (y*c2) + (z*c3) = 100
где x, y, z это количество товара, а с1, с2, с3 это стоимость товара.

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

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 07:20 
Не в сети
Любитель математики
Аватара пользователя
Зарегистрирован:
16 июл 2011, 08:33
Сообщений: 22268
Откуда: Беларусь, Минск
Cпасибо сказано: 2096
Спасибо получено:
4958 раз в 4631 сообщениях
Очков репутации: 845

Добавить очки репутацииУменьшить очки репутации
Пусть [math]x,~y,~z[/math] - количества болтов гаек и шайб соответственно. Тогда должны выполняться равенства
[math]x+y+z=100,~~~(1)[/math]

[math]10x+5y+0,5z=100.[/math]

Обе части второго равенства разделим на [math]0,5,[/math] чтобы избавиться от дробного коэффициента, и получим
[math]20x+10y+z=200.~~~(2)[/math]

Получили систему двух линейных уравнений (1) и (2) с тремя неизвестными. Вычтем из уравнения (2) уравнение (1) и получим
[math]19x+9y=100.~~~(3)[/math]


В уравнении (3) коэффициенты при неизвестных - взаимно простые числа, а левая часть уравнения - целое число. Тогда это уравнение имеет целые решения. Найдём их:
[math]9y=100-19x,[/math]

[math]y=\frac{100-19x}{9}=\frac{99+1-18x-x}{9}=-2x+11-\frac{x-1}{9},[/math]

[math]\frac{x-1}{9}=t,[/math]

[math]x=9t+1,~~~(4)[/math]

[math]y=-2(9t+1)+11-t=-19t+9,[/math]

[math]y=-19t+9.~~~(5)[/math]


Придавая параметру [math]t[/math] различные целочисленные значения, из уравнений (4), (5) можно найти значения [math]x[/math] и [math]y,[/math] а зная их, можно найти [math]z[/math] из уравнения (1). Можно, конечно, выразить [math]z[/math] через [math]t[/math]:
[math]z=100-x-y=100-(9t+1)-(-19t+9)=10t+90.[/math]

В любом случае обнаруживается, что единственным значением параметра, удовлетворяющим смыслу задачи, является [math]t=0,[/math] при котором [math]x=1,~y=9,~z=90[/math] - неотрицательные целые числа.

Я думаю, что подбора значений параметра [math]t[/math] можно избежать, если найти область его целочисленных значений, удовлетворяющих условию задачи. Имеем
[math]x=9t+1 \ge 0,[/math] тогда [math]t \ge 0,[/math]

[math]y=-19t+9 \ge 0,[/math] тогда [math]t \le 0,[/math]

[math]z=10t+90 \ge 0,[/math] тогда [math]t \ge -9,[/math]

и из первых двух неравенств сразу видно, что [math]t=0[/math] и только.

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Andy "Спасибо" сказали:
Rembrant
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 14:06 
Не в сети
Начинающий
Зарегистрирован:
15 авг 2016, 23:37
Сообщений: 3
Cпасибо сказано: 1
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Спасибо большое, но немного не то что я хотел.
В программировании используются переменные и циклы, а они работают немного по другой логике.
Программа выполняет цикл (повторяемые действия) до тех пор пока выполняется заданное условие. В моем случае она изменяет 3 переменных X, Y, Z. Выглядит это так.
X Y Z
0 0 1
0 0 2
0 0 3
Подбор значений как в кодовом замке. До тех пор пока каждая переменная не пройдет путь от 0 до 100.
После каждого изменения на единицу происходит проверка на равенство
{X+Y+Z=100} & {(X*10)+(Y*5)+(Z*0.5)=100}
Если равенство выполняется (обе стороны уравнения равны) для обоих уравнений, в дополнительную переменную (которая является счетчиком) прибавляется +1.

Но такая программа выполняет несколько миллионов одинаковых действий чтоб найти всего одно правильное значение. Это не рационально.
Мне нужна некая логическая закономерность которую я не заметил ( или математическое правило которое я не знаю), чтоб добавить ее в условия выполнения цикла и таким образом уменьшить количество итераций.

В любом случае спасибо за старания.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 14:15 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

Добавить очки репутацииУменьшить очки репутации
Дорогой Рембрандт )

Вам предложили оптимальное решение средствами математического программирования

Вам что нужно?

Код перебора вариантов?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 14:19 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

Добавить очки репутацииУменьшить очки репутации
Обратитесь , пожалста, к кодерам )

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 14:24 
Не в сети
Начинающий
Зарегистрирован:
15 авг 2016, 23:37
Сообщений: 3
Cпасибо сказано: 1
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Я только начал учится, поэтому я слабо представляю как такой алгоритм можно включить в программу. А даже если получится, это будет строк 50, а мой код всего строк 15. И второе, сейчас мы проходим тему - Циклы, поэтому заданные задачки нужно решать именно так). И третье, ник RembranDt был занят)

Ладно, еще раз спасибо за старания, можете закрывать тему.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 14:30 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

Добавить очки репутацииУменьшить очки репутации
[math]\lg{super n!} = \sum \limits_{k=1}^{n} \lg{k!} \sim \frac{ n }{ 2 }\lg{2 \pi } \sum \left[ \left( k + \frac{ 1 }{ 2} \right)\lg{k} - k\lg{e} \right][/math]

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 14:38 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

Добавить очки репутацииУменьшить очки репутации
Простите меня, пожалста, формулу не туда воткнул )))

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 16 авг 2016, 16:35 
Не в сети
Любитель математики
Аватара пользователя
Зарегистрирован:
16 июл 2011, 08:33
Сообщений: 22268
Откуда: Беларусь, Минск
Cпасибо сказано: 2096
Спасибо получено:
4958 раз в 4631 сообщениях
Очков репутации: 845

Добавить очки репутацииУменьшить очки репутации
Rembrant, я всего лишь предложил Вам "более адекватный способ решения этой задачи", как Вы и просили. Но программированием на алгоритмических языках я не интересуюсь, поэтому дать Вам совет по реализации этого способа не могу. Попробуйте задать вопрос на http://www.cyberforum.ru.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Задачка по программированию.Определить количество комбинаций
СообщениеДобавлено: 17 авг 2016, 08:13 
Не в сети
Последняя инстанция
Зарегистрирован:
17 окт 2013, 19:46
Сообщений: 1377
Cпасибо сказано: 108
Спасибо получено:
561 раз в 447 сообщениях
Очков репутации: 155

Добавить очки репутацииУменьшить очки репутации
Ну, если задача по программированию, то да - надо писать циклы, но это уж совсем нерационально
Rembrant писал(а):
Подбор значений как в кодовом замке. До тех пор пока каждая переменная не пройдет путь от 0 до 100.После каждого изменения на единицу происходит проверка на равенство {X+Y+Z=100} & {(X*10)+(Y*5)+(Z*0.5)=100}
Хотя бы
Для  X от 0 до 100
Для Y от 0 до 100-X
Z:=100-X-Y
проверка...
.....
Можно заметить, что число шайб должно делится на 10 и еще оптимизировать.
Программировать - хорошо, но с умом.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему    На страницу 1, 2  След.  Страница 1 из 2 [ Сообщений: 12 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Определить количество комбинаций диапазона до слова

в форуме Комбинаторика и Теория вероятностей

beats

5

1309

03 май 2015, 13:02

Задачка по программированию с математическим уклоном

в форуме Информатика и Компьютерные науки

oilbassdiablo

6

422

20 янв 2019, 15:54

Количество комбинаций пароля

в форуме Комбинаторика и Теория вероятностей

Flagellant

12

444

25 янв 2021, 15:27

Как рассчитать количество вариантов комбинаций?

в форуме Комбинаторика и Теория вероятностей

GeorgD

2

1089

29 июл 2016, 05:09

Комбинаторика и количество подсчета комбинаций

в форуме Комбинаторика и Теория вероятностей

Elijah96

14

137

09 янв 2024, 16:53

Количество комбинаций сумм из заданных чисел

в форуме Дискретная математика, Теория множеств и Логика

Volodislavir

0

344

30 окт 2015, 03:17

Рассчитать количество всех возможных комбинаций

в форуме Комбинаторика и Теория вероятностей

masterxq

1

505

29 ноя 2015, 20:48

Найти количество комбинаций расшифровки алфавитного шифра

в форуме Комбинаторика и Теория вероятностей

vladbara705

5

247

22 ноя 2021, 20:53

Задачка на минимальное количество шагов

в форуме Интересные задачи участников форума MHP

Abra-Kadabra

38

1823

17 июн 2015, 03:44

Определить количество путей

в форуме Дискретная математика, Теория множеств и Логика

lolliker228

3

139

13 дек 2020, 23:57


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved