![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
&y JOKER |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 15.9.2009 Город: Chelyabinsk city Учебное заведение: слава Богу, уже закончил ;) Вы: другое ![]() |
Здравствуйте!
Я не студент и не математик,и даже не программер,а просто интересующийся различными сферами деятельности. Возникла необходимость написать софтинку, которая бы раскладывала число на составляющие по заданному уравнению: дано число S, которое может принмать значения от 8 до 234881024 S=x*(y*(4+z1)+4+z2)+z3 , где x может принимать значение от 1 до 255 y - от 1 до 65535 z1,z2,z3 - от нуля, до 20 Имея на входе значение S необходимо вычислить: x,y,z1,z2,z3 Хотя-бы одно из множеств решений. Вариант перебора отпадает - это некрасиво как-то и неинтересно. (IMG:style_emoticons/default/smile.gif) Была мысль начать с того, на какие числа вообще делится S, но это опять-же только перебором. Поэтому у меня вопрос к профессионалам, возможно-ли это решить красиво и каким образом? (IMG:style_emoticons/default/smile.gif) Спасибо! p.s. прошу прощения если не в тот топик, просто я не знаю что такое дифуры и относится-ли к ним моя задача. |
![]() ![]() |
&y JOKER |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 15.9.2009 Город: Chelyabinsk city Учебное заведение: слава Богу, уже закончил ;) Вы: другое ![]() |
Цитата Дифуры не знаете, а вот дифференциальные уравнения "сократили" правильно. ну это вот единственнное, чему меня научили в ВУЗе. (IMG:style_emoticons/default/smile.gif) формула претерпела некоторые изменения, но суть осталась та-же: S=(x*((y*(4+z1))+5+z2))+1+z3 в общем, алгоритм получился примерно следующий: 1. находим x перебором от 1 до 255 и z3 от 0 до 10 проверяем делится-ли (S-1-z3) на x без остатка и находится-ли частное n в пределе 65535. Таким образом нашли x, z3 и частное n. 2. получается: S=(x*n)+1+z3. Далее работаем с n. перебором z1 и z2 от 0 до 10 проверяем целочисленное деление выражения: y=n-5-z2/(4+z1) И вроде-бы все работает замечательно, но только в пределах до значаения S=9387296. Далее, диапазон "поправочного" коэфф. z3 приходится увеличивать, что собссно не есть гуд. (IMG:style_emoticons/default/sad.gif) |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 10:18 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru