Я хочу добавить диагонали в квадратную или прямоугольную матрицу, чтобы эмулировать процесс добавления частичных результатов в алгоритм умножения.
Примерно так:
2412
x 3231
---------
2412
7236
4824
+ 7236
---------
7793172
Мне нужновыполните это, шаг за шагом, чтобы удовлетворить требования программы судьи онлайн.Я уже выяснил, как получить частичные результаты умножений (числа 2412, 7236, 4824, 7236), и поместил их в квадратную матрицу.
Я понял, что могу получить результат сложенияэту матрицу, рассматривая квадрат или прямоугольник, как:
2 4 1 2
7 2 3 6
4 8 2 4
7 2 3 6
и получим результат сложения, сложив каждую диагональ (начиная с верхнего правого) и учитывая перенос сложения и используя вспомогательныемассив, который имеет то же количество цифр, что и number_of_digits_in_operand_a + number_of_digits_in_operand_b (операнд a 2412 и операнд b 3231, в данном случае).
Например, результат массива в его крайней правой позиции должен быть:
result[(digits_a+digits_b)-1] = partialResult[0][3];
следующий:
result[digits_a+digits_b]=(partialResult[0][2] + partialResult[1][3] + carry) %10;
newCarry = (partialResult[0][2] + partialResult[1][3] + carry) / 10;
Ну, я застрял в написании двойного вложенного цикла, который должен добавлять эти диагонали, начиная с верхнего правого.Помогите.Пожалуйста.