Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

03.09.2009, 11:49
|
|
Новичок
Регистрация: 19.07.2009
Сообщений: 17
Провел на форуме: 134119
Репутация:
2
|
|
Загадка :)
как запрограмировать вычисление функции z = x16 (x в 16 степени), с использованием наименшего количества операций умножения ??? 
|
|
|

03.09.2009, 11:56
|
|
Участник форума
Регистрация: 23.07.2009
Сообщений: 261
Провел на форуме: 4435957
Репутация:
539
|
|
Не сюда пришёл! 
|
|
|

03.09.2009, 11:57
|
|
Постоянный
Регистрация: 06.04.2009
Сообщений: 383
Провел на форуме: 1288105
Репутация:
328
|
|
использовать циклы 
или что то типа этого:
(x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x)(x^16) 
|
|
|

03.09.2009, 11:59
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Z^х
pascal
z=exp(ln(z) * x)
php
$z =exp(log($z) * $x)
Последний раз редактировалось rushter; 03.09.2009 в 12:13..
|
|
|

03.09.2009, 11:59
|
|
Постоянный
Регистрация: 30.08.2005
Сообщений: 730
Провел на форуме: 6828219
Репутация:
2274
|
|
Ему скорей всего для паскаля =\
ня http://programmersforum.ru/showthread.php?t=4192
гугол наше фсё
|
|
|

03.09.2009, 12:00
|
|
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме: 7452489
Репутация:
1359
|
|
побитовый сдвиг, не ?
|
|
|

03.09.2009, 12:00
|
|
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме: 432613
Репутация:
80
|
|
[Delphi, PASCAL]
uses math;
function power_Ex(x: Extended): extended;
begin
Result:= Power(x,16);
end;
Если произвести анализ системной функции Power, в результате мы придем к исходнику функции IntPower
function IntPower(const Base: Extended; const Exponent: Integer): Extended;
asm
mov ecx, eax
cdq
fld1 { Result := 1 }
xor eax, edx
sub eax, edx { eax := Abs(Exponent) }
jz @@3
fld Base
jmp @@2
@@1: fmul ST, ST { X := Base * Base }
@@2: shr eax,1
jnc @@1
fmul ST(1),ST { Result := Result * X }
jnz @@1
fstp st { pop X from FPU stack }
cmp ecx, 0
jge @@3
fld1
fdivrp { Result := 1 / Result }
@@3:
fwait
end;
Как видно из листинга команда умножения вызывается 2 раза, я думаю это оптимальный вариант, т.к. все системные функции библиотеки math, оптимизированы.
|
|
|

03.09.2009, 12:28
|
|
Постоянный
Регистрация: 17.09.2008
Сообщений: 562
Провел на форуме: 6962560
Репутация:
536
|
|
Ну вообще задачка больше математическая... Если условие таково, что можно юзать только операцию умножения, то первое что приходит на ум, реализуется с помощью 4-х операций умножения...
$x = число;
for ($i = 1; $i <= 4; $i++)
$x = $x*$x;
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|