| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > ЛЮДИ ПОМОГИТЕ С ЗАДАЧЕЙ!!! |
| Автор: Elfin 27.10.2004, 19:58 |
| Ув. тов. пр-мисты.. нужно срочно решить задачу, зачет по программированию горит... вобщем условие звучит так, точной формулировки не помню, объясню на своих словах... дано выражение... ХРУСТ*ГРОХОТ=РРРРРРРРРРР каждая буква в слове (будет являться переменной в задаче) должна иметь свое значение, всего разных букв в выражении 7, значит у каждой буквы будет свое значение, причем одинаковым буквам - одинаковое значение, разным разное, например если переменные будут иметь такие значения: х=4 р=2 у=3 с=0 т=1 г=6 о=7 то выражение будет выгляденть так 42301*627471=22222222222 итак надо найти при каких значениях переменных выражение будет истинно.... мляха муха я запарился с этой задачей, не знаю как решать помогите люди!!!! ААА!!! пысы, очевидно что, чтобы получить левую часть не меньше правой части уравнения, то нужно чтобы одна из переменных "х" и "г" равнялась не меньшему числу чем 4 другая - не меньше 5 (иначе длина результата левой части будет меньше 11 знаков) |
| Автор: Pakshin A. S. 27.10.2004, 21:20 |
| Можно решать в лоб. Буквы принимают значение от 0 до 9 => берем и просто делаем различные сочетания значений букв... Добавлено @ 21:21 завтра-послезавтра предложу решение... |
| Автор: Elfin 28.10.2004, 04:08 |
| различные сочетания значений это понятно, дело в том по каким законам или формулам они бу дут изменяться в цикле? если начальные значения переменных увеличивать на один, то вскоре мы вернемся к этим же начальным значениям, я же пробовал брать рандомные значения, но ничего не вышло - прога очень долго считает (возможно дажн бесконечно, я так и не дождался результата) тем более препод сказал что это решение является не рациональным и процент такого подбора случайными числами по теории вероятности близок к 0% |
| Автор: ~FoX~ 28.10.2004, 08:23 | ||
Elfin
39916800 - итераций - не очень долго Если простым перебором подайдет, то выложу решение с небольшой оптимизацией |
| Автор: Akina 28.10.2004, 09:17 |
| ~FoX~ Ну, во-первых, итераций не более 10! / (10-7)! = 604800. На самом деле меньше - заведомо Х и Г не ноль, причем хотя бы одно - 4 или больше, Р - 1, 4, 5, 6 или 9. Проще решать разложением РРРРРРРРРРР на 2 множителя. ИМХО. |
| Автор: Alex101 28.10.2004, 12:54 | ||
Интересно, как это у тебя получилось? Да, еще вопрос, в какой системе счисления? Если десятичная система, то уже понятно, что Т<>0, 1, 5, 6 |
| Автор: Guest 28.10.2004, 15:23 | ||
1 это типа фрагмент подбора, если переменные равны значениям приведенным выше 2 в десятичной системе, и объясни пожалуйста почему Т<>0, 1, 5, 6 зы я очень тупой и в математике ни х-ра не понимаю, так что извини если я чего то непонял |
| Автор: Elfin И выше написанное - тоже м 28.10.2004, 15:28 | ||||||
это почему так? ведь каждому символу должно быть присвоено значение 0..9 причем разным буквам - разные значения, откуда например вот это 00002*000001?? если в слове грохот максимум может быть два нуля - две буквы О а в слове хруст - не больше одного |
| Автор: Girder 28.10.2004, 15:36 | ||||
Вот к примеру: решение 'влоб'... и уже на 51 интерации получен первое решение! C учетом подинтераций, сумарное их количество не будет больше 1000...2000 Решение 'влоб'...
|
| Автор: Alex101 28.10.2004, 15:40 | ||
ГРОХОТ х ХРУСТ Вначале перемножаюся два одинаковых числа (Т) - последняя цифра произведения, это последняя цифра результата ТхТ. Если бы Т=0,1,5,6, то результат оканчивался бы тоже на Т (0,1,5,6). Поскольку последняя цифра произведения Р (отличная от Т) =>Т<>0, 1, 5, 6 |
| Автор: Elfin 28.10.2004, 16:32 |
| 2Girder Я все таки не совсем понимаю то как ты решил задачу, но вижу что правильно, (я все-таки студент 1го курса) хотелось бы конечено код на паскале |
| Автор: Elfin 31.10.2004, 13:27 | ||
Блин задачу уже скоро сдавать... |
| Автор: Elfin 1.11.2004, 18:10 | ||
сам удивился что работает даже если нет условий что одна буква не равна другой!!! а на переменную j лучше какнть ограничитель до 9999999 поставить хотя и не обязательно,,, данный код еще раз подтверждает: "все гениальное всегда просто!" |