2010-12-29 2 views
-4

Я не пытаюсь здесь шутить, но я очень смущен. Я пытался понять это, как 6 часов прямо сейчас, здесь открылось около 20 блокнотов, 15 калькуляторы, и я наклоняю его, я всегда получаю слишком много лишнего в конце.Математический ублюдок, очень запутанный возможный новый математический прорыв

Давайте объясним некоторые переменные здесь, с которыми нам нужно работать. Скажем, мы получили

2566 мин точек/2566 макс точек

0 мин XP/4835 Макс хр

Существует 2 типа заданий, которые необходимо использовать обе переменные (точки и хр)

Работа (1) вычитает 32 очка за клик и добавляет 72 xp за клик.

Работа (2) вычитает 10 очков за клик и добавляет 14 xp за клик.

Я пытаюсь выяснить, как правильно рассчитать избыток. Таким образом, это потеряло бы минимальное количество Job (1), чтобы по-прежнему иметь достаточное количество очков, чтобы делать столько Job (2), насколько это возможно, и до сих пор достигает max xp.

Это то, что я не хочу запускать Job1 до тех пор, пока не останется больше очков, потому что при этом Job1 будет превышать максимальный XP (2566), и я никогда не получу никаких Job2.

Я хочу получить максимально возможное задание Job2, а затем используя правильный расчет, достигните или переполним MaxXP 2566 с помощью Job1, чтобы всегда достичь максимальной XP. В значительной степени моя ситуация в том, что мне нужно получить 2566 MaxXP, чтобы продолжить выполнение заданий. Помня об этом, я хочу поставить приоритет на job2 и использовать Job1 для достижения необходимого MaxXP 2566, чтобы сбросить минимальные точки до максимума, чтобы полностью переделать процесс. Я пытаюсь автоматизировать это.

Вот мои уравнения

amountOfJob1s = (minPoints/32)

amountOfJob2s = (minPoints/10)

excessXP = (amountOfJob1s * 72) - maxXP

если overXP < 0 then break

Результаты

mustDoJob1s = ???

mustDoJob2s = ???

Благодарим вас, если кто-нибудь поможет мне разобраться в этом, поэтому я могу предложить хорошее уравнение здесь, я был бы признателен.

Либо это не математически возможно, либо я просто не могу его испортить. Я полагаю, что у меня достаточно переменных.

+5

«Новый математический прорыв?» - Неа. –

+0

Ну вы можете сказать мне ответ, или вы тоже не знаете? поэтому вы не знаете, было ли это сделано или нет, я не ищу здесь вероятности, но точность – SSpoke

+3

Ответ? Боюсь, вы должны сначала задать вопрос, который имеет смысл. –

ответ

2

Пусть job1 быть количество job1 и job2 быть количество job2. Мы остались с двумя уравнениями и двумя неизвестными:

job1 * 32 + job2 * 10 = 2566 
job1 * 72 + job2 * 14 = 4835 

Так:

job1 = 45.683... 
job2 = 110.411... 

Учитывая job1 как более высокий коэффициент хр/точки и вы хотите перейти на 4835 хр, круглый job1 вверх , вычислите job2 и округлите его.

job1 = 46 

job1 * 32 + job2 * 10 = 2566 
job2 = 109.4 

job2 = 109 

Проверил:

job1 * 32 + job2 * 10 = 2562 points 
job1 * 72 + job2 * 14 = 4838 xp 

Done.

Два неизвестных вряд ли являются «новым математическим прорывом» :)

+0

Wow dude sorta меня раздражает, как умные люди, но да, вы его взломали, вы должны написать об этом теории. Я пришел к такому же выводу около 5 минут назад, прежде чем читать это, используя 2 LOOPS, которые делают уменьшение MAX возможного job2 и увеличивают MAX возможное job1 и пришли к 109,46, как вы, но его процессор тяжелый. Я не могу поверить в математическое уравнение для такого рода вещей действительно существует тот, кто придумывает эти вещи. – SSpoke

+0

m = (32 * 14) - (10 * 72); x = (2566 * 14) - (10 * 4835); y = (32 * 4835) - (2566 * 72); x_answer = x/m; y_answer = y/m; – SSpoke

0

Я предполагаю, что вы хотите получить как можно больше «XP», потратив не более 2566 «очков», «нажимая» целое число раз {n1, n2} на каждое из двух «заданий». Вот ответ в Mathematica:

In[8]:= Maximize[{72 n1 + 14 n2, n1 >= 0, n2 >= 0, 
    32 n1 + 10 n2 <= 2566}, {n1, n2}, Integers] 

Out[8]= {5956, {n1 -> 80, n2 -> 0}} 

Или, может быть, вам нужно провести точно 2566 баллов? Тогда лучшее, что вы можете сделать, это:

In[9]:= Maximize[{72 n1 + 14 n2, n1 >= 0, n2 >= 0, 
    32 n1 + 10 n2 == 2566}, {n1, n2}, Integers] 

Out[9]= {5714, {n1 -> 78, n2 -> 7}} 

Это то, что вы хотели?

+0

Thats the thing Andrew Я не хочу запускать Job1 до тех пор, пока не останется больше очков, потому что при этом Job1 будет превышать максимальный XP (2566), и я никогда не смогу выполнить какой-либо Job2. Я хочу получить максимально возможный Job2, а затем используя правильный расчет finnsh MaxXP с Job1, чтобы всегда достичь максимальной XP. В значительной степени моя ситуация в том, что мне нужно получить 2566 MaxXP, чтобы продолжить выполнение заданий. Помня об этом, я хочу поставить приоритет на job2 и использовать только Job1 для завершения MaxXP до 2566. – SSpoke

+0

Также у меня нет этих функций. Максимизируйте. Я использую функциональное программирование langauge с ограниченными операторами. Как бы это сделать в Java/PHP/C/C++ /. NET/VB? – SSpoke

+0

Из того, что я понимаю твоего очень умного человека, я надеюсь, что ты сможешь помочь мне, потому что все остальные - просто мудрая задница, и я получил этот проект в 8 утра, и сейчас 3 часа дня. Я всю ночь, я столкнулся с математическими проблемами, я думал, что смогу понять, что получается, я тупой. Кажется, что вы выбрали Out [9] = {}, я вижу n1 = 78 и n2 = 7, но я пытаюсь получить максимальное количество n2 и наименьшее количество n1. Я не хочу ТОЧНО тратить столько очков, сколько я просто хочу сделать его наиболее эффективным, он МОЖЕТ переполнять Max XP, но он не может идти ниже. – SSpoke

0

Пусть a -чис Иов 1 и b количество Работы 2.

XP = 72 a + 14 b 
P = 32 a + 10 b 

Вы кажетесь хочет решить для a и b, так что XP <= 4835, P <= 2566 и b это как можно больше ,

72 a + 14 b <= 4835 
32 a + 10 b <= 2566 

b будет наибольшим, когда a = 0, т.е.

b <= 4835 ÷ 14, => b <= 345 
b <= 2566 ÷ 10, => b <= 256 

Как b должно быть как ниже 345 и 256, он должен быть ниже 256.

Заменитель назад в:

72 a + 14 × 256 <= 4835, => a <= (4835 - 14 × 256) ÷ 72, => a <= 17 
32 a + 10 × 256 <= 2566, => a <= (2566 - 10 × 256) ÷ 32, => a <= 0 

поэтому a = 0, XP - 2560, а использованные точки - 3584.

В качестве альтернативы, вы можете решить для самого близкого удовлетворения двух неравенств

72 a + 14 b <= 4835    (1) 
32 a + 10 b <= 2566    (2) 
b <= (2566 - 32 a) ÷ 10   (3) rearrange 2 
72 a <= 4835 - 1.4 (2566 - 32 a) (4) subst 3 into 1 
27.2 a <= 1242.6 
a <= 45.68 

так выбрать a = 45 как наибольшее целое решение, давая b = 112, XP является 4808, точки используется 2560

Для любого из них нет необходимости в программировании; если константы, связанные с двумя заданиями, меняются, то формулы меняются.

Для труднее решить примеры, соответствующие области математики называют linear programming

+0

спасибо за объяснение, но в итоге ваша математика оказалась немного коротким. с b = 112 и a = 45 Я получаю только 4808 XP вместо необходимого 4835 XP. Ваш код слишком сумасшедший для моего разума. Другой плакат Nicolas Repiquet, который рассказал мне о двух неизвестных, придумал идеальный ответ: a = 46 b = 109 (возможно, пол/потолок), но вы вдумчиво объяснили это, и я очень признателен, что не знаю, кому ответ я надеюсь, что вы не будете злиться, но мне нравится более короткий ответ лучше. – SSpoke

Смежные вопросы