inaine73
?>

Дана целочисленная квадратная матрица m[n][n].вывести ее под диагональные элементы, не включая диагональ в виде столбцов слева-направо снизу-вверх

Информатика

Ответы

lazarevaavrora
Программа на паскале, я так понял? const n=5; var m: array[1..n,1..n] of integer;   i,j: integer; begin for i: =1 to n do for j: =1 to n do read(m[i,j]); for i: =2 to n do begin for j: =1 to i-1 do write(m[i,j],' '); writeln; end end.
akudryashov
Using system; namespace test {    public class program {        public static void main(string[] args)        {            double a,b,c,d,x1,x2;             a=double.parse(console.;             b=double.parse(console.;             c=double.parse(console.;             d=b*b-4*a*c;             if(d> =0){            x1=(-b+math.sqrt(d))/(2*a);             x2=(-b-math.sqrt(d))/(2*a);             console.writeline("x1="+x1+"; x2="+x2);             }              else console.writeline("нет корней");         }    } }
Elizavetaborisovna1992
Язык программирования не указан, сказано только, что была сделана попытка создать алгоритм в пайтоне, но работа оказалась медленной. это не удивительно, ведь пайтон - интерпретатор и там уж не до оптимизации. предлагаю решение на pascalabc.net. приводятся тайминги пяти прогонов, разрешение таймера - 16 мс. исходные последовательности: - 1 млн случайных целых из [100; 2000]; - 2 млн случайных целых из [50; 1500]; - 3 млн случайных целых из [1; 1000]; алгоритм: - генерируем последовательности; - создаем и заполняем для каждой последовательности частотный словарь в виде кортежа < ключ> < количество> , где ключ - значение элемента, количество - количество раз, которое этот элемент встретился в последовательности; - создаем последовательности ключей для всех трех словарей и находим их пересечение; - удаляем из каждого словаря элементы, ключей которых нет в пересечении; - создаем на основе каждого словаря последовательность значений (частот) и сортируем её по возрастанию; - для каждой пары значений первой и второй последовательности выбираем минимальное значение, а затем поступаем так же с результирующей и третьей последовательностью, находя в конце сумму её членов. // pascalabc.net 3.2, сборка 1374 от 10.01.2017 // внимание! если программа не работает, обновите версию! begin   var t0: =milliseconds;   var a1: =arrrandom(1000000,100,2000);   var a2: =arrrandom(2000000,50,1500);   var a3: =arrrandom(3000000,1,1000);   var t1: =millisecondsdelta;   writeln('инициализация: ',t1,' мс');   millisecondsdelta;     var d1: =new dictionary< integer,integer> ;   foreach var e in a1 do d1[e]: =d1.get(e)+1;   var d2: =new dictionary< integer,integer> ;   foreach var e in a2 do d2[e]: =d2.get(e)+1;   var d3: =new dictionary< integer,integer> ;   foreach var e in a3 do d3[e]: =d3.get(e)+1;   t1: =millisecondsdelta;   writeln('заполнены частотные словари: ',t1,' мс');   millisecondsdelta;     var kd1: =d1.select(e-> e.key).toarray;   var kd2: =d2.select(e-> e.key).toarray;   var kd3: =d3.select(e-> e.key).toarray;   var ki: =kd1.intersect(kd2).intersect(kd3); // пересечение ключей   t1: =millisecondsdelta;   writeln('получено пересечение ключей: ',t1,' мс');   millisecondsdelta;     foreach var k in kd1 do       if not (k in ki) then d1.remove(k);   var v1: =d1.orderby(x-> x.key).select(x-> x.value);   foreach var k in kd2 do       if not (k in ki) then d2.remove(k);   var v2: =d2.orderby(x-> x.key).select(x-> x.value);   foreach var k in kd3 do       if not (k in ki) then d3.remove(k);   var v3: =d3.orderby(x-> x.key).select(x-> x.value);   var m: =v1.zip(v2,(x,y)-> min(x,(v3,(x,y)-> min(x,;   t1: =millisecondsdelta;   writeln('получен результат: ',t1,' мс');   millisecondsdelta;   writeln(m); end. результаты инициализация: 234 мс заполнены частотные словари: 312 мс получено пересечение ключей: 0 мс получен результат: 1000 мс 474970 инициализация: 234 мс заполнены частотные словари: 312 мс получено пересечение ключей: 16 мс получен результат: 984 мс 474137 инициализация: 250 мс заполнены частотные словари: 312 мс получено пересечение ключей: 16 мс получен результат: 984 мс 474176 инициализация: 234 мс заполнены частотные словари: 312 мс получено пересечение ключей: 0 мс получен результат: 1000 мс 474090 инициализация: 234 мс заполнены частотные словари: 312 мс получено пересечение ключей: 16 мс получен результат: 984 мс 474108 как видно из результатов, в указанных условиях из 6 млн значений отбирается примерно 475 тыс и занимает это порядка полутора секунд на достаточно немолодом пк c процессором intel core 2 duo (3 ггц) и 2 гб оперативной памяти. вполне приемлемо.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дана целочисленная квадратная матрица m[n][n].вывести ее под диагональные элементы, не включая диагональ в виде столбцов слева-направо снизу-вверх
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Газинурович
Veronika1270
mrFuz
laleonaretouch
ЭдуардовнаКлючников1361
ludakamasana
shumeikoElena362
Valerii276
valeron7hair7
marinamarinazmeeva2444
rstas
ИП_Рамис873
zelreiki
Вера1072
topshopnails