Показать полную графическую версию : Корень квадратный
Ребята, как на С++ за 2 секунды можно найти корень квадратный из 10^3000?
Tonny_Bennet
17-11-2011, 23:19
Math.Sqrt(10e30);
pow(pow(10,3000),0.5) »
в таком виде даже не компилируется, надо указывать тип чисел
и даже если указать выводит 1.#INF, pow(10,3000) не влазит даже в long double, надо использовать класс SuperLong
Любую степень корня вычисляем по схеме ( напримр: кубический корень из 6) = 6^(1/3) = 1.8171...
Квадратный - 6^(1/2)
Короче, под это подходит любая степень корня.
А цифры в уравнение подставит и Буратинко, деревянный человечек :)
Надеюсь понятно выразился :)
Это понятно. Стоит задача такого плана:
Условие:
Для заданного натурального числа А нужно найти наибольшее число В такое, что B2 ≤ A.
Входящие данные:
Во входящем файле записано натуральное число A (A ≤ 103000).
Исходящие данные:
В исходящий файл выведите максимальное натуральное число B, квадрат которого не превышает A. Число B следует выводить без лидирующих нулей.
А идея была такой: имеем мы например число 385. Делим его пополам (без остачи), получаем 192. 1922 > 385. Делим, 192/2 = 96, 962 > 385. Делим 96/2 и так дальше.
Tonny_Bennet
22-11-2011, 11:14
Т.е. у вас есть 2 числа А и В. И нужно зная число А вывести число В, квадрат которого равен (или почти равен т.к. В должно быть натуральным) числу А.
А почему бы просто не взять корень из числа А каким бы оно ни было и просто отбросить дробную часть. Получим число В.
Или я что-то недопонимаю ???
Ну а во что его запихнуть? ни в какой long long не влезет...
Tonny_Bennet
24-11-2011, 12:09
В C# точно есть тип double (http://msdn.microsoft.com/ru-ru/library/678hzkk9.aspx) думаю в С++ есть тоже.
В любом случае вы можете брать число достаточно большого размера пусть даже в качестве строки.
пусть 111111111111111222222222222222
Затем брать половину строки (но не больше 15 чисел) и ставить десятичную точку
111111111111111.222222222222222e15
А дальше отдельно брать корень из степени 10 и корень из самого числа.
P.S. Точность double 324 знака до запятой и 15 после запятой.
А дальше отдельно брать корень из степени 10 и корень из самого числа. »
Не мудрите. Пользуйтесь логарифмами и экспонентами :)
cmath (math.h) (http://www.cplusplus.com/reference/clibrary/cmath/)
Tonny_Bennet
24-11-2011, 18:26
Не мудрите. Пользуйтесь логарифмами и экспонентами
cmath (math.h) »
Точно!!!
Как же развращают (в хорошем смысле этого слова) языки программирования типа С.
Вот помнится на паскале возводили в степень и корни брали через экспоненту и логарифм... а щас... эх...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.