Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2010, 23:53   #1
[code]
Новичок
Джуниор
 
Регистрация: 20.07.2009
Сообщений: 1
По умолчанию Вычислить (a^b)%d

помогите решить задачу

Написать программу на ассемблере: вычислить результат выражения: (a^b)%d
a,b,d<256
Заранее спасибо!
[code] вне форума Ответить с цитированием
Старый 24.05.2010, 08:43   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

[code]
Возми калькулятор и возведи число 255 в 255-ую степень получишь 4,653138834498368145776998455562e+6 13 это как раз соответствует твоему заданию (a, b, d<256); без использования FPU (наверное, знаешь как его программировать) подобные задачи не решаются -- плати деньги и задача решена.
Заранее пожалуйста!
Mikl___ вне форума Ответить с цитированием
Старый 24.05.2010, 14:55   #3
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

наверное есть органичение на d отдельное
http://www.e-maxx.ru/algo/binary_pow
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 25.05.2010, 03:54   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

airyashov
Если возведение в степень делать через умножение в цикле, то в первую очередь должно быть ограничение на число b
Mikl___ вне форума Ответить с цитированием
Старый 25.05.2010, 09:34   #5
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

[code]
вот здесь пример возведения в степень то есть a^b а %d добавишь сам
Mikl___ вне форума Ответить с цитированием
Старый 25.05.2010, 10:29   #6
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
airyashov
Если возведение в степень делать через умножение в цикле, то в первую очередь должно быть ограничение на число b
нет, если d<16, тогда все можно написать простыми операциями, вообще эта задача решается и для ограничения в 256 очень просто, только работать придется со словами

(a^b) % d= (a % d)^(b % d), т.е. в любой момент нужен лишь остаток его и придется возводить в степень, а он <256
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru

Последний раз редактировалось airyashov; 25.05.2010 в 10:33.
airyashov вне форума Ответить с цитированием
Старый 25.05.2010, 11:09   #7
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от airyashov
нет, если d<16, тогда все можно написать простыми операциями, вообще эта задача решается и для ограничения в 256 очень просто, только работать придется со словами
(a^b) % d= (a % d)^(b % d)
проверяем: a=15 b=15 d=9
1) 15^15=437893890380859375
437893890380859375 mod 9 = 0
2) 15 mod 9 = 6
6^6=46656
3)46656=0?
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить IP Nice42ru Помощь студентам 1 04.02.2010 10:58
вычислить -maxim92- Помощь студентам 1 25.01.2010 09:49
Вычислить. svobodys Помощь студентам 7 16.12.2008 17:21
Вычислить. Artimbulidor Помощь студентам 4 24.11.2008 19:10