Форум программистов, компьютерный форум CyberForum.ru

Алгоритмы возведения числа в большую степень. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ матрици чисел http://www.cyberforum.ru/cpp-beginners/thread52882.html
есть 2 задачи каторые нужно решить Задана матрица чисел: а Вычислить сумму элементов, образующих букву :Z Задана матрица чисел: а
C++ Сортировка массивов в С Люди помогите) как отсортировать одномерный статический рандомный массив по возрастанию без использования указателей? желательно пример с программным кодом... Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread52881.html
найти площадь правильного шестиугольника C++
Нужно найти площадь правильного шестиугольника можно не обращать на всякие мелкие ошибки типа нехватает скобки или ";" на быструю руку короче спасибо
C++ Определить принадлежность точки заданной области
Задание: Разработать программу, которая в ответ на вводимую с клавиатуры пару вещественных чисел, представляющих собой координаты X,Y точки A на плоскости, выдает текстовое сообщение о принадлежности этой точки заданной области. Например:"Точка принадлежит заданной области" или "Точка не принадлежит заданной области". В программе должно быть предусмотрено повторение всех операций с...
C++ Трабла с функцией ( http://www.cyberforum.ru/cpp-beginners/thread52845.html
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> int main() { } char m(char s) { char mass;
C++ 2 хода конём Заданы координаты двух клеток шахматного поля (от 1 до 8 по обоим измерениям). Требуется вычислить, может ли конь дойти из одной клетки в другую за один ход, если нет, то за два хода. Если дойдет за 2 хода, то каков промежуточный ход. Я почти решил задачу простым перебором комбинаций смещения второй клетки, осталось лишь найти промежуточную клетку при двух ходах. Среда: Borland C++ 3.1... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
27.09.2009, 21:12     Алгоритмы возведения числа в большую степень.
Обязательно ли иметь дело именно с целым числом? Может, и double сгодится? Тогда всё сведётся просто к вызову функции pow:
C++
1
2
#include <math.h>
double result = pow(20.0, 57.0);
А для совсем больших чисел можно пользоваться логарифмами. Например, возведение 25 в степень 154 можно сделать так:
C++
1
2
3
4
5
double lg25_10 = log10(25);    // Логарифм 25 по основанию 10
double lg_result = lg25_10 * 154;    // Логарифм от (25^154) получается умножением
int result_exp = static_cast<int>(floor(lg_result));  // Целая часть логарифма даёт десятичный порядок результата
double result_mantissa = lg_result - result_exp;  // Из дробной части можно получить мантиссу
printf("25 в степени 154 = %f * 10^%d", pow(10.0, result_mantissa), result_exp);
Если возможно в дальнейшем пользоваться логарифмом вместо самого результата, или возможно внести соответствующие изменения в вычисления, это может оказаться довольно удобно. Ну а при использовании обычных целых чисел надо помнить, что их предел - около 2 миллиардов для знаковых и 4 миллиарда для беззнаковых, что не так уж и много.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru