Составить программу для решения следующей : дана матрица размером m*n и число k (1< =k< =m). найти сумму и произведение элементов k -ой строки данной матрицы
// PascalABC.NET 3.2, сборка 1374 от 10.01.2017 // Внимание! Если программа не работает, обновите версию!
begin var m:=ReadInteger('Количество строк в матрице:'); var n:=ReadInteger('Количество столбцов в матрице:'); var k:=ReadInteger('Номер строки для подсчета:'); Writeln('*** Исходная матрица [',m,',',n,'] ***'); var a:=MatrRandom(m,n,-50,50); a.Println(4); Writeln(4*a.ColCount*'-'); var b:=a.Row(k-1); Writeln('Сумма элементов в выбранной строке: ',b.Sum); Writeln('Произведение элементов в выбранной строке: ', b.Aggregate(BigInteger(1),(x,y)->x*y)) end.
Если число 49 записывается как 121, значит первый остаток от деления равен 1, то есть основанием системы счисления является число, кратное 48.
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза. Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления. Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков. Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2. Остаётся число 6. Проверим
//PascalABC.NET (версия 3.1, сборка 1198 от 11.03.2016) var a,n,k,i,j,s:integer; begin writeln('Количество учеников и количество оценок'); readln(n,k); for i:=1 to n do begin for j:=1 to k do begin write('Ученик № ',i, ' оценка № ',j,' = '); readln(a); s:=s+a; end; end; println('Средняя оценка группы ',s/(n*k):6:3); end.
// Внимание! Если программа не работает, обновите версию!
begin
var m:=ReadInteger('Количество строк в матрице:');
var n:=ReadInteger('Количество столбцов в матрице:');
var k:=ReadInteger('Номер строки для подсчета:');
Writeln('*** Исходная матрица [',m,',',n,'] ***');
var a:=MatrRandom(m,n,-50,50);
a.Println(4); Writeln(4*a.ColCount*'-');
var b:=a.Row(k-1);
Writeln('Сумма элементов в выбранной строке: ',b.Sum);
Writeln('Произведение элементов в выбранной строке: ',
b.Aggregate(BigInteger(1),(x,y)->x*y))
end.
Пример
Количество строк в матрице: 6
Количество столбцов в матрице: 13
Номер строки для подсчета: 4
*** Исходная матрица [6,13] ***
-6 19 -16 -42 -2 -13 -11 10 -24 18 9 -21 -17
-46 3 -13 27 -2 -19 39 12 -23 20 -11 48 43
-5 40 -41 -2 -27 30 47 -33 38 38 -50 31 4
20 -46 -46 42 13 -48 -41 50 -23 3 -44 -15 2
32 20 -26 -34 49 46 -39 6 42 -1 1 29 -5
29 -17 -34 -33 15 -13 46 44 12 34 8 -15 -43
Сумма элементов в выбранной строке: -133
Произведение элементов в выбранной строке: -207088709667840000