В квадратной
таблице n × n найдите сумму чисел, расположенных на главной и
побочной диагоналях.
Вход. Первая строка
содержит число n (1 ≤ n ≤ 500). Далее задается квадратная матрица n × n,
элементы которой – целые числа, не превышающие по модулю 105.
Выход. Выведите сумму
чисел на главной и на побочной диагоналях матрицы.
Пример
входа |
Пример
выхода |
4 1 2 3 4 5 6 7 8 3 2 5 4 8 7 9 3 |
15 21 |
массив
Пусть m –
заданный двумерный массив с нулевой индексацией. Элемент m[i][j] принадлежит:
·
главной диагонали, если i = j;
·
побочной диагонали, если i + j = n – 1;
Рассмотрим приведенный пример.
Сумма чисел на главной диагонали
равна 1 + 6 + 5 + 3 = 15.
Сумма чисел на побочной диагонали
равна 8 + 2 + 7 + 4 = 21.
Читаем входные данные. Элементы матрицы обрабатываем на лету, без предварительного
создания двумерного массива.
scanf("%d",&n);
a = b = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
scanf("%d",&val);
В переменной a вычисляем сумму элементов главной
диагонали.
В переменной b вычисляем сумму элементов побочной диагонали.
if (i == j) a
+= val;
if (i + j ==
n - 1) b += val;
}
Выводим ответ.
printf("%d %d\n",a,b);
int m[510][510];
Читаем входные данные.
scanf("%d", &n);
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d",
&m[i][j]);
В переменной a вычисляем сумму элементов главной
диагонали.
В переменной b вычисляем сумму элементов побочной диагонали.
a = b = 0;
Перебираем все элементы двумерного
массива.
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
Элемент m[i][j]
лежит на главной диагонали, если i = j;
if (i == j) a += m[i][j];
Элемент m[i][j]
лежит на побочной диагонали, если i +
j = n – 1;
if (i + j == n - 1) b += m[i][j];
}
Выводим ответ.
printf("%d %d\n", a, b);
Java реализация
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
int m[][]
= new int[n][n];
for(int i = 0;
i < n; i++)
for(int j = 0;
j < n; j++)
m[i][j] = con.nextInt();
int a = 0,
b = 0;
for(int i = 0;
i < n; i++)
for(int j = 0;
j < n; j++)
{
if (i == j) a += m[i][j];
if (i + j == n - 1)
b += m[i][j];
}
System.out.println(a + "
" + b);
con.close();
}
}
Java реализация – на лету
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
int a = 0,
b = 0;
for(int i = 0;
i < n; i++)
for(int j = 0;
j < n; j++)
{
int val = con.nextInt();
if (i == j) a += val;
if (i + j == n - 1)
b += val;
}
System.out.println(a + "
" + b);
con.close();
}
}
Python реализация
Читаем входные данные.
n = int(input())
m = [list(map(int, input().split())) for _ in
range(n)]
В переменной a вычисляем сумму элементов главной
диагонали.
В переменной b вычисляем сумму элементов побочной диагонали.
a = b = 0
Перебираем все элементы двумерного массива.
for i in range(n):
for j in range(n):
Элемент m[i][j]
лежит на главной диагонали, если i = j;
if i == j: a += m[i][j]
Элемент m[i][j]
лежит на побочной диагонали, если i +
j = n – 1;
if i + j == n - 1: b +=
m[i][j]
Выводим ответ.
print(a, b)
Python реализация – конструирование
списков
Читаем входные
данные.
n = int(input())
m = [list(map(int, input().split())) for
_ in range(n)]
В переменной a вычисляем
сумму элементов главной
диагонали.
В переменной b вычисляем
сумму элементов побочной диагонали.
a = sum(m[i][i] for i in range(n))
b = sum(m[i][n - 1 - i] for i in range(n))
Выводим ответ.
print(a, b)