1. найти суммы положительных элементов в каждой строке матрицы a(6,3). 2. задана матрица z(3,5). найти и вывести на печать все элементы матрицы, удовлетворяющих условию 0
// PascalABC.NET 3.2, сборка 1437 от 03.05.2017 // Внимание! Если программа не работает, обновите версию!
begin var a:=MatrRandom(6,3,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); a.Rows.Select(r->r.Where(x->x>0).Sum).Print; Println(' - суммы положительных');
Writeln; var z:=MatrRandom(3,5,-10,20); z.Println(4); Writeln(4*z.ColCount*'-'); z.Rows.SelectMany(x->x).Where(x->(x>0) and (x<15)).Println end.
Все расчеты будем делать в битах 1 байт это 8 бит 512*8*2847= 11 661 312 бит всего на дискете
а) 8*8 000*1=64 000 бит за одну секунду (единица это канал звука) 11 661 312/64 000=182.208 отбросил дробную часть и получим 182 секунды звука низкого качества это 3 минуты 2 секунды
б) 16*48 000*2=1 536 000 двойка в примере это два канала звука т.е. стерео. 11 661 312/1 536 000=7.592 отбросил дробную часть и получим 7 секунд звука высокого качества.
в ответ записать или точный расчет вместе с дробной часть или примерный т.е. целые секунды.
Думаю, логика у нас здесь будет такая: нужно разложить данные три числа на простые сомножители. Получится: 132 = 2 * 2 * 3 * 11 106 = 2 * 53 134 = 2 * 67 Что у них есть общего - то можно откинуть, потому что количество кругов будет при общих сомножителях делиться без остатка. Собрать в ответ нужно следующее: от первого - 2 * 2 * 3 * 11 от второго - 53 (двойку не берём, потому что она уже взята с первым) от третьего - 67 (двойку опять не берём)
Получается: 2 * 2 * 3 * 11 * 53 * 67 = 468732 секунды. Это, как я думаю, ответ.
При этом (чисто для сведения), до момента встречи: первый намотает 3551 круг второй - 4422 круга третий - 3498 кругов.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=MatrRandom(6,3,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
a.Rows.Select(r->r.Where(x->x>0).Sum).Print;
Println(' - суммы положительных');
Writeln;
var z:=MatrRandom(3,5,-10,20);
z.Println(4); Writeln(4*z.ColCount*'-');
z.Rows.SelectMany(x->x).Where(x->(x>0) and (x<15)).Println
end.
Пример
-67 56 -68
16 -59 -82
-54 -44 90
82 95 39
-44 60 22
-97 82 23
56 16 90 216 82 105 - суммы положительных
7 -5 -3 5 -7
3 5 -8 14 -6
12 14 19 14 -7
7 5 3 5 14 12 14 14