1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 100
|
||||||
1 | ||||||
Возвести число в (7) семизначную степень28.12.2014, 17:27. Просмотров 1948. Ответов 18
Метки нет Все метки)
(
Подскажите пожалуйста, как можно реализовать данную функцию? К примеру необходимо число 2 возвести в 1234567 степень. Проблема заключается в выводе такого большого числа. Зарание благодарен.
0
|
|
28.12.2014, 17:27 | |
Как возвести дробное число в целую степень? К примеру 2,7 возвести в степень 2 на C++. Если введенное число отрицательное и четное, то возвести его в 3 степень, иначе возвести в квадрат
|
|
Модератор
![]() 10147 / 8497 / 5164
Регистрация: 18.12.2011
Сообщений: 22,734
|
|
28.12.2014, 18:10 | 3 |
С double можно возвести только в 308 степень.
Только длинная арифметика!
1
|
338 / 338 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
||||||
28.12.2014, 18:12 | 4 | |||||
Думаю задача не на длинную арифметику.
Для 5-ти значной степени программа уже работает долго.
IrineK, думаю Вы правы Спасибо.
1
|
1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 100
|
|
28.12.2014, 18:45 [ТС] | 6 |
Да, задача состоит именно в том, что бы вывести точное значение.
Нет, необходимо получить десятичное значение.
0
|
1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 100
|
|
28.12.2014, 19:18 [ТС] | 8 |
Как сделать то-же самое, но для 7-ми значной степени, время отработки программы, не столь важны в данной задаче.
Добавлено через 3 минуты Что вы имели в виду под:
0
|
338 / 338 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
|
28.12.2014, 19:18 | 9 |
Anadrion, Программа работает для 7-ми значной степени!
Только Вы никогда не дождетесь что она досчитает, и я понятия не имею как написать программу с длинной арифметикой способной посчитать такое за нормальное время. Со строками еще медленнее.
0
|
Супер-модератор
![]() ![]() |
|
28.12.2014, 19:23 | 10 |
Что считается "нормальным" временем? Программа с длинной арифметикой вычисляет все 371642 символа числа 21234567меньше чем за 5 секунд. Включая вывод на экран. Вполне приемлемое время для таких вычислений...
1
|
338 / 338 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
|
28.12.2014, 20:04 | 12 |
volvo, ну для 2 может и легко посчитать но надо не только для 2 -ки.
Нормальное время 10 секунд. 10^5 умножений длинных чисел за 10 секунд не посчиталось, больше ждать я не смог. Добавлено через 31 минуту 371642 символа уже не влезает в мои числа, 1^1234567 программа считала 10 секунд 2^12345 около 30 секунд
0
|
Заблокирован
|
||||||
28.12.2014, 21:21 | 14 | |||||
Где-то также
Сейчас попробую быстрый алгоритм. Но он - неточный.
1
|
28.12.2014, 21:30 | 15 |
IrineK, и почему же он неточный?
Добавлено через 5 минут Другое дело, что при реализации бинарного возведения в степень потребуется возводить длинное число в квадрат, что накладно по времени - простейшая реализация будет работать за O(n^2), где n - длина числа. В таком случае можно написать алгоритм Карацубы или какой-нибудь из этой области.
0
|
Заблокирован
|
||||||
29.12.2014, 02:35 | 16 | |||||
Dani, ну тогда карацубьте )
Добавлено через 5 часов 3 минуты Теперь уже 2^12345 - сразу
1
|
1350 / 989 / 313
Регистрация: 28.07.2012
Сообщений: 2,746
|
|
29.12.2014, 02:58 | 17 |
Можешь попробовать еще и алгоритм быстрого умножения. Например, алгоритм Карацубы...
0
|
338 / 338 / 331
Регистрация: 02.10.2014
Сообщений: 666
|
||||||
29.12.2014, 08:13 | 18 | |||||
Мысль появилась после этого поста:
Придумал простой алгоритм: 3^6 = 0*3^1 * 1*3^2 * 1*3^4 (6 = 2 + 4) 6 | 0 (6%2 = 0) 6/2 = 3 3 | 1 (3%2 = 1) 3/2 = 1 1 | 1 (1%2 = 1) 1/2 = 0
(моя программа не тянет, запутался пытаясь переписать на динамические массивы (в обычные число не влезает)) PS позже допишу обязательно. Добавлено через 23 минуты было ![]() Добавлено через 4 минуты Хотя нет, где деление степени на 2
0
|
Заблокирован
|
|
29.12.2014, 11:39 | 19 |
Хорошо бы кто-то еще попробовал.
Добавлено через 2 минуты Пост 16 - это просто улучшение поста 14. Умножение происходит in chunks по 18 позиций. Что ускоряет процесс. Не более того.
0
|
29.12.2014, 11:39 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Возвести число в a степень 7 за 4 операций Возвести число в степень(дробную)
Возвести введенное с клавиатуры число в степень n Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |