Помогите написать программу умножения двух чисел по методу Аль-Хорезми с++ 11 13 5 26 2...

0 голосов
44 просмотров

Помогите написать программу умножения двух чисел по методу Аль-Хорезми с++
11 13

5 26

2 52 (вычёркиваем)

1 104

143 (ответ)


Информатика (12 баллов) | 44 просмотров
0

На каком языке?

0

с++

0

Вы бы описали метод - написал бы программу.. Ни как не могу найти его описание\\

0

сейчас

0

Всё, нашёл

0

Аль-Хорезми знал другой способ умножения чисел. Запишем множителиx и y рядом (см. пример ниже). Теперь будем повторять следующую опера-цию: поделим первое число пополам, отбросив дробную часть 1/2 (если чис-ло было нечётным), а второе число удвоим. Будем делать так до тех пор, пока первое число не станет единицей. После этого вычеркнем все строки, в кото-рых первое число чётно, и сложим оставшиеся числа из второй колонки.11 135 262 52 (вычёркиваем)1 104 143 (ответ)

0

На самом деле два этих алгоритма умножения (столбиком в двоичной си-стеме и по способу аль-Хорезми) тесно связаны.

0

Глядите: числа 13, 26 и 104,которые складываются в примере, получаются умножением числа 13 на сте-пени двойки и в точности совпадают с промежуточными результатами приумножении столбиком в двоичной системе. Разница лишь в том, что во вто-ром примере мы пользуемся десятичной записью, и поэтому двоичное пред-ставление 11 приходится строить, глядя на чётность чисел в левой колонке.Так что алгоритм Аль-Хорезми неявно использует двоичную систему, хотя всечисла записываются в десятичной.

Дан 1 ответ
0 голосов

#include
using namespace std;

int main()
{
    int A,B,C = 0;
    cin >> A >> B;
    
    while(A > 1)
    {
        if (A % 2 != 0) C+=B;
        B*=2;
        A/=2;
    }
    cout << (C+=B);<br>    return 0;
}

(6.6k баллов)
0

спасибо