Const
<span>n=3; </span>
<span>var a:array[1..n, 1..n] of integer; </span>
<span>i,j,s:integer; </span>
<span>begin </span>
<span>s:=0; </span>
<span>writeln('Введите элементы матрицы'); </span>
<span>for i:=1 to n do </span>
<span>for j:=1 to n do begin </span>
<span>read(a[i,j]); </span>
<span>if i<j then s:=s+a[i,j]; </span>
<span>end; </span>
<span>writeln; </span>
<span>for i:=1 to n do begin </span>
<span>for j:=1 to n do write(a[i,j], ' '); </span>
<span>writeln; </span>
<span>end; </span>
<span>writeln('Сумма всех элементов над главной диагональю = ',s); </span>
<span>end.</span>
Согласно алгоритму из блок-схемы, пока не получен ноль, число надо делить на 2, если оно четное, и отнимать 1, если нечетное. Проделываем это:
500 (четное) -> 250 (четное) -> 125 (нечетное) -> 124 (четное) -> 62 (четное) -> 31 (нечетное) -> 30 (четное) -> 15 (нечетное) -> 14 (четное) -> 7 (нечетное) -> 6 (четное) -> 3 (нечетное) -> 2 (четное) -> 1 (нечетное) -> 0
Чтобы получить из нуля 500, нужно пойти в обратном порядке: 0 -> 1 -> 2 -> 3 -> 6 -> 7 -> 14 -> 15 -> 30 -> 31 -> 62 -> 124 -> 125 -> 250 -> 500
Для 1024 всё проще:
От 1024 до 0: 1024 -> 512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1 -> 0 (на всех шагах кроме последнего число уменьшается в 2 раза, на последнем уменьшается на 1)
В обратную сторону 0 -> 1 -> 2 -> 4 -> ... -> 512 -> 1024 (на первом шаге число увеличивается на 1, затем 10 раз увеличивается в 2 раза)
35 минут=2100 секунд
40 Мбайт=40*2^23 бит =5*2^26 бит
--------------------
t1=5*2^26 : 2^18 = 5*2^8=5*256=1280 c (из Б в В)
t2=5*2^26 : 2^19 = 5*2^7=5*128=640 c (из А в Б)
1280+640=1920<2100
t=2100-1920=180c
А) 5120;40960
б) 1536байт; 1,5Кб
в)1024байи;1кб
г)1636кг;3/2048гб
д)512;4096