Как вы будете умножать два числа без эффективного использования «*» и поразрядных операций? (Просто используя такие операторы, как +, -, /).Умножить два числа без использования оператора «*» и побитовых операций
ответ
a*b == 10^(Log(a*b)) == 10^(Log(a) + Log(b)) == exp(ln(a) + ln(b))
где ^
означает возведение в степень и Log
является логарифм с основанием 10
exp (ln (a) + ln (b)), то, не используя общее возведение в степень – unkulunkulu
@unkulunkulu Thx. Добавлено его как другое преобразование – halex
multiply(a,b):
if(a==0) return 0
r<-0
while(b/a!=r) r++
return r
Хорошо, что я шучу, но вы должны дать больше информации о вашем поиске: что является эффективным способом для тебя? Можете ли вы дать приблизительную оценку сложности? Или вам нужен самый эффективный алгоритм? Потому что, если вы не делаете ничего точного, я могу ответить тоже:
multiply(a,b):
r<-0
while(a!=0)
r<-r+b
b<-b-1
return r
Какой смысл первого примера кода (который, похоже, делает разделение)? – Dukeling
- 1. Вычитая два числа без использования оператора «-»
- 2. Умножение числа без использования оператора *
- 3. Как разделить два целых числа без использования оператора деления?
- 4. Умножить два нечетких числа
- 5. Умножить два многочлена без использования свертки
- 6. Хотите вернуть два оператора без использования 'и'
- 7. Каков наилучший способ добавить два числа без использования оператора +?
- 8. Как разделить два числа без использования оператора разделения?
- 9. Контрольная сумма без логических/побитовых операций
- 10. Умножить два числа с узлом
- 11. Объяснение вывода побитовых операций
- 12. практические применения побитовых операций
- 13. Использование побитовых операций
- 14. Дополнение без использования арифметических или побитовых операторов
- 15. Преобразование из двоичного числа в целое число для побитовых операций?
- 16. Выполнение целочисленных и побитовых операций на GPU
- 17. rightrotate без побитовых операторов
- 18. Как сделать рекурсивную функцию, которая умножает два положительных числа без использования оператора умножения
- 19. Оптимизация побитовых операций в C
- 20. Умножение без использования оператора *
- 21. Поиск квадратного корня из заданного числа с использованием побитовых операций
- 22. Умножить два числа, не используя умножение
- 23. Как вернуть 0 с помощью побитовых операций?
- 24. операций побитовых с использованием скользкого
- 25. Как разделить два числа без использования символа «/»?
- 26. Как умножить два числа порядка 10^18
- 27. Умножить все индексированные целые числа на два
- 28. как умножить два числа в datagridview
- 29. Умножить два произвольных числа в строке
- 30. Как умножить два rdds без использования mllib в scala?
Посмотрите на http://stackoverflow.com/questions/2069488/how-can-i-perform-multiplication-without- a-operator – david99world