А410б

Задача: Дана целочисленная матрица [latex][a_{i,j},\ i=1,\ldots,n;\ j=1,\ldots,m][/latex]. Получить [latex]b_{1},\ldots,b_{n}[/latex], где

[latex]{b}_{i}=\sum_{j=1}^{n}(-1)^{i+j}a_{ij}[/latex]

Код на С++: 

 

Код на Java:

 

 

Тесты: 

[latex]n*m[/latex] [latex]\begin{bmatrix}{a}_{ij}\end{bmatrix}[/latex] [latex]b_{i}[/latex]
3*3 1 2 3

4 5 6

7 8 9

2 -5 8
1*6 2 -4 6 -8 10 -12 42
3*5 1 3 5 7 9

11 13 15 17 19

21 23 25 27 29

5 -15 25

Алгоритм:  Чтобы решить эту задачу, необходимо было создать два массива: входной массив (матрицу) и массив результатов (который надо инициализировать нулями). Далее, необходимо завести цикл, в котором будет проводится, собственно говоря, подсчёт. В зависимости от суммы номеров строки и столбца исходной матрицы, -1 в степени этой суммы будет принимать положительное  или отрицательное  значение. Соответственно, к результату будет прибавляться или отниматься значение, стоящее на i-том j-том месте.

Для проверки правильности работы программы, воспользуйтесь ссылкой.

Related Images:

7 thoughts on “А410б

  1. Во-первых, для того, чтобы вычислить (-1)^(i+j+2) * A[i][j], не нужно прямо следовать математической записи и использовать функцию pow. Достаточно посмотреть на четность выражения (i+j+2).
    Во-вторых, мне кажется более логичным обнулять вектор B не в цикле ввода матрицы A, а в цикле вычисления вектора B. Таким образом у нас будет два логически выделенных цикла: один просто читает матрицу А, а другой просто строит вектор В.

    • В-третьих, либо в записи условия, либо в решении есть ошибка: B[i] = sum{j=1..n}(A[i][j] * (-1)^n) — в таком виде (-1)^n не зависит от j и может быть вынесена из-под суммы. А Вы вычисляете (-1)^(i+j+2).

    • Да, это ошибка в условии. Там i+j.

    • 1)Функция была написана раньше, я её скопипастил и вставил. Это заняло меньше времени.
      2)Исправил.

  2. — Нужно всё же разобраться с чередованием знаков. (-1) в степени это просто удобное (для математиков) обозначение чередования знаков — «+» для чётных, «—» для нечётных. Так его и нужно вычислять: (i + j) % 2? 1: -1
    — Что-то в тестах не так. «1 2 34 5 67 8 9» — это 7 чисел, а нужно 9. Распишите в виде матрицы, тогда станет ясно. С «1 3 5 7 911 13 15 17 1921 23 25 27 29» похожая ситуация. (Это я делаю вид, что не понимаю, что происходит. Но матрицей представить матрицу это как-то естественнее.)

    • Исправил (сбилось после редактирования).

Добавить комментарий