Дорога, соединяющая города i и j, даст единицу в две позиции - (i, j) и (j, i). Тогда общее количество единиц в матрице равно удвоенному числу дорог. Отсюда и простое решение - считать N^2 чисел, подсчитать количество единиц и поделить его на 2. Можно считать и сумму - от этого ничего не изменится.
#include <iostream> int main() { int n = 0, sum = 0, temp = 0; std :: cin >> n; for (int i = 0; i < n * n; i++) { std :: cin >> temp; sum += temp; } std :: cout << sum / 2; return 0; }
// PascalABC.NET 3.0, сборка 1157 от 02.02.2016
begin
SeqGen(ReadInteger('k=')+1,2.0,x->2+1/x).Skip(1).Println;
end.
Тестовое решение:
k= 6
2.5 2.4 2.41666666666667 2.41379310344828 2.41428571428571 2.41420118343195
А теперь "школьный вариант":
// PascalABC.NET 3.0, сборка 1157 от 02.02.2016
var
i,k:integer;
a,a0:real;
begin
Write('k='); Read(k);
a0:=2;
for i:=1 to k do begin
a:=2+1/a0; a0:=a; Write(a,' ')
end
end.
Тестовое решение:
k=6
2.5 2.4 2.41666666666667 2.41379310344828 2.41428571428571 2.41420118343195
#include <iostream>
int main() {
int n = 0, sum = 0, temp = 0;
std :: cin >> n;
for (int i = 0; i < n * n; i++) {
std :: cin >> temp;
sum += temp;
}
std :: cout << sum / 2;
return 0;
}