![]() |
|
Модераторы: Akina |
![]()
|
|
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Здравствуйте!
Подскажите, пожалуйста, кто знает - как избежать переполнения при выполнении A mod B, при условии, что A - double? Пробовала заменить mod на: C=int( A/B ) D=B*C ostatok=A-D Но результат равен нулю, хотя виндовский калькулятор выдает, что остаток равен 97. Может где точность вычислений подправить? И как это сделать? PS надо посчитать --> 7^101 mod 239 Спасибо заранее : ) |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Ради прикола начал разбираться с этим калькулятором (у которого нет функции ^)
http://www.planet-source-code.com/vb/scrip...95&lngWId=1 Возведение в степень я уже реализовал. Осталось сделать Mod результата и если выйдет тоже 97, то считай проблема решена. Как сделаю выложу... Главное преимущество этого калькулятора это использование ассемблера. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Да-а... ну и навороченный же там калькулятор |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Короче есть еще один калькулятор
BigNumVB.zip, 72kB http://home.versatel.nl/vspickelen/Largefiles/Download.htm (не хуже вроде того, что я вчера нашел) и у него есть операция a^k по крайней мере. Так вот написав такой код
и воткнув в проект файлы Extension.bas, bignumVB.bi, PrintFun.bas и Supplement.bas и в папкус с проектом файл bignumVB.dll ты получишь нужный тебе результат. То есть для того чтобы считать с большими числами (которые VB не поддерживает) тебе нужна спец. библиотека. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Уххх... как-то все сложно получается, хотя вроде бы пустяковая операция..
Спасибо большое за помощь |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Gippa, я запал на твой вопрос И вот к чему это привело:
ИТОГО: 1) Диковатая штука, но зато без ассемблера и калькуляторов. 2) Можно это свернуть в одну строку и обойтись без кучи переменных - я их для наглядности наплодил. 3) Чтоб обрабатывать не только эти числа, а любые, можно написать функцию, наверное. Пусть кто хочет - займется. А может и у меня руки дойдут... P.S. Если что не так... Я все-таки не математик. |
|||
|
||||
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Я рада, что вопрос такой "заводной" получился А код действительно какой-то хитрый - мое понимание сломалось где-то на 19 строчке Теперь по поводу самого задания. Формула в оригинале выглядит так: X(i+1)=7^X(i) mod 239, а 101 - это X(0). Так что навряд ли этот код можно будет и на все распространить... Тем более дальше (делала ручками на калькуляторе) там значения от единиц до сотен получаются. Надо все-таки какую-нить универсалку сделать. А вообще, спасибо за активное участие! |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Тутанхамец, подсказал мне одну мыслю.
Врозможно это
тогда полное (и самое простое) решение задачи. До третьего элемента проверял на калькуляторе - вроде правильно. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Ура, ура! Cardinal спасибо тебе большое! Действительно все с моими "ручными" ответами сходится!
|
|||
|
||||
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Cardinal! Возник у меня еще один вопрос - чем ты руководствуешься, когда пишешь цикл 7-10 строчки:
Как это можно обосновать? Т.е. может такое "правило" математическое есть? Почему это эквивалентно X(i+1)=7^X(i) mod 239? Спасибо заранее за ответ |
|||
|
||||
| cardinal |
|
||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Посмотри, что Тутанхамец делает. Он предлагает возводить в степень (намного меньшую заданной), потом делать Mod, а потом возводить результат от Mod'a дальше в степень. На числах можно описать данное так.
Давай исходить от простого 7^5 mod 10. То есть цикл крутиться четыре раза. Смотрим что получается.
Если посчитать тоже самое сразу 7^5 mod 10 то получится тот же ответ. Получается, что 49 дает тот же остаток при делении на 10, что и число 9, так зачем нам 49, если можно взять 9 и ничего мы от этого не потеряем. Вся информация, которая нам нужна для Mod'a останется. Можно также привести такое правило (не знаю как его доказать на данный момент
При помощи этого правила я и сделал цикл. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||
|
|||||||
| gippa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.5.2006 Репутация: нет Всего: нет |
Cardinal еще раз шлю большие СПАСИБА
|
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |