Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Олександr
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 10
#1

Используя рекурсию, перемножить 2 натуральных числа не используя операции умножения и иметь логарифмическую сложность - C++

01.03.2014, 21:27. Просмотров 1262. Ответов 20
Метки нет (Все метки)

Программа должна перемножать 2 натуральных числа не используя операции умножения и иметь логарифмическую сложность(помогите написать хотя бы рекурсивную функцию я то я вообще не могу вьехать))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 21:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Используя рекурсию, перемножить 2 натуральных числа не используя операции умножения и иметь логарифмическую сложность (C++):

Написать функцию умножения двух,заданных с клавиатуры чисел, используя только операцию умножения и рекурсию - C++
Помогите пожалуйста с рекурсией Написать функцию умножения двух,заданных с клавиатуры чисел, используя только операцию умножения и...

Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую a7 за 4 операции умножения - C++
1.Дано число a. Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую a7 за 4 операции умножения;...

Определить значение n^3, не используя операции умножения - C++
Определить значение {n}^{3}, не используя операции умножения. Известно что: {1}^{3}=1 {2}^{3}=3+5 {3}^{3}=7+9+11 ...

Используя do while перемножить вводимые числа - C++
Направьте в нужную сторону. Задача: пользователь вводит много чисел, которые последовательно умножаются, пока результат <=1000; ...

Написать программу умножения ряда нечётных натуральных чисел от 1 до 21, используя указатели - C++
Добрый день! Есть задача, умножить числа 1 * 3 * 5 * 7 * ...* 21, используя циклы int main() { long long x = 1, dob = 1; ...

Возвести число в 10 степень, используя только четыре операции умножения - C++
Подскажите что не так?При проверке на сайте пишет частичное решение. Задача: Напишите программу, которая возводит введенное число в...

20
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
04.03.2014, 23:31 #16
Олександr, скачал твой проект, запустил - работает все нормально.
Версия Visual Studio какая? Может попробовать ее переустановить?
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,207
05.03.2014, 00:03 #17
Цитата Сообщение от zer0mail Посмотреть сообщение
Решения "в лоб" не дадут логарифмической сложности. Интересно, операции разрядного сдвига вправо/влево допустимы?
а если нет?
то можно использовать умножение на 2
вот в таком виде
C++
1
a+=a;
но вот деление не знаю как

а так можно поразрядно умножать (разряды двоичные)

примерно так
C++
1
2
3
4
5
6
7
8
9
10
int fncMul(int a, int b,)
{
 if(b==0)
  return 0;
 if(b&1)
  return a+fncMul(a+a,b/2); 
 else
  return fncMul(a+a,b/2);
 
}
Добавлено через 50 секунд
Цитата Сообщение от Олександr Посмотреть сообщение
НЕ КАТИТ(возникли ошибки сборки)
может покажешь какие?
1
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
05.03.2014, 04:48 #18
Цитата Сообщение от Олександr Посмотреть сообщение
НЕ КАТИТ(возникли ошибки сборки)
студию не обновляли? другую студию поверх этой не ставили?
1
zer0mail
2374 / 2004 / 199
Регистрация: 03.07.2012
Сообщений: 7,196
Записей в блоге: 1
05.03.2014, 14:04 #19
Цитата Сообщение от ValeryS Посмотреть сообщение
Сообщение от zer0mail
Решения "в лоб" не дадут логарифмической сложности. Интересно, операции разрядного сдвига вправо/влево допустимы?
а если нет?
то можно использовать умножение на 2
Если нет, то придется складывать и "складывать сложенное" При аккуратной работе можно обойтись и без деления. Но неясно, какой уровень подготовки предполагает это задание.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,207
05.03.2014, 14:17 #20
Цитата Сообщение от zer0mail Посмотреть сообщение
При аккуратной работе можно обойтись и без деления.
как?
вот с делением я показал как реализовать лог. зависимость
Цитата Сообщение от zer0mail Посмотреть сообщение
то придется складывать и "складывать сложенное"
не понял переведи
1
Олександr
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 10
12.03.2014, 18:32  [ТС] #21
Спасибо всем кто помогал. Я справился с проблемой, все пашет, тему можна закрывать.
0
12.03.2014, 18:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2014, 18:32
Привет! Вот еще темы с ответами:

Используя рекурсию вивести групу даних с их индексами не используя масив - C++
Вот мой код на с++ #include<iostream> #include<conio.h> using namespace std; void elementu(int); void main(void){ ...

Не используя операции умножения и деления, найти количество отрезков, расположенных на отрезке А - C++
Прошу еще раз, прочитайте правила форума: http://www.cyberforum.ru/announcement.php?a=3. В особенности пункт 4.3: Создавайте темы с...

Цикл: Используя только операции умножения и деления вычислить: A^n (A в степени n) , минимизировав число операций - C++
Дано натуральное число A ( Ввод числа производится в шеснадцатеричной системе ). Используя только операции умножения и деления вычислить:...

найти индекс по по значению числа, используя рекурсию. - C++
Здравствуйте! Есть инициализированный и отсортированный массив определенного размера. Надо в этом массиве в функции int ReturnNumberArrey...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru