![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вычисление С в степени N с минимальным количеством умножений [D6]
Студент:( © (2005-09-24 01:28:00)Господа програмисты, помогите плиз
Срочно необходимо такую вещь в универ:
реализовать программу в которую вводится целых числа C и N
необходимо вычислить С в степени N используя минимальное число операций умножения
Если не совсем ясно высказался:
Если c=2 n=7
то лучшее это
c:=c*c;
c:=c*c;
c:=c*c;
c:=c/2;
(естесно не в таком виде, с if, for и самым простым я знаком)
Очень прошу помочь, желательно напишите готовый код в виде консольного приложения, а то я разбираюсь плохо... а сделать надо
jack128 (2005-09-24 22:57:00) [21]Без единого умножения
Result := Exp(Ln(C)*abs(N));
if N < 0 then
Result := 1 / Result;
incolex (2005-09-24 22:50:00) [22]// Lamer@fools.ua © (24.09.05 01:55) [2]
Ты конечно хитрец :-) но зачемже пудрить мозги человеку, зачем расписывать существующую функцию {IntPower (X: Extended; Y: Integer ): Extended;} (хотя в Delphi она написана на ASM), кстати эта ф-ция возводит число только в цлочисленную степень, а вот к примеру, {Power ( X, Y: Extended ): Extended;} - возводит вдробную степень.
Lamer@fools.ua (2005-09-24 01:55:00) [23]
function IntPower(X: Cardinal; Y: Cardinal): Int64;
begin
Result := 1;
while Y > 0 do
begin
while not Odd(Y) do
begin
Y := Y div 2;
X := Sqr(X);
end;
Dec(Y);
Result := Result * X;
end;
end;
Германн (2005-09-24 01:47:00) [24]Я лично не понял связку "D6 в сабже" и "минимальное число операций умножения". Причем нет никаких упоминаний об ASM?
Хотя, кто их знает! Нынешних преподов т.е.!
Да! Хотя еще неизвестно о каком предмете универа идет речь.
Я то об алгоритмах программирования.